Будьте осторожны с аннотациями и печатать. Идеи, обсуждавшиеся в 484, новы и реализованы в модуле typing
.Этот модуль доступен только в Python3.5 (последние typing
также доступны от pip
для Py2 и Py3).
https://docs.python.org/3/library/typing.html
Это Обратите внимание, что вы процитировали от раздела в 484, который начинается:
Чтобы открыть использование статического типа проверки на Python 3.5, а также более ранние версии, равномерное пространство имен обязательный. С этой целью вводится новый модуль в стандартной библиотеке, называемый типизацией.
То, что в списках заметок есть типы аннотаций, а не фактические классы объектов (встроенные или от collections
). Не путайте их.
Обратите внимание, что Dict
, List
, Set
и FrozenSet
все капитализированы, где, как функции (и имен типа) являются dict
, list
, set
, frozenset
. Другими словами, чтобы сделать словарь, вы используете dict()
или {}
, а не Dict
.
Аннотации являются новичками в 3.0 (не в 2.n). В обычном интерпретаторе все, что они делают, заполняет словарь функции __annotations__
. В интерпретаторе нет ничего, кто использует или требует аннотации.
http://mypy-lang.org/ описывает себя как экспериментальную проверку набрав. Вам нужно посмотреть его документацию, чтобы узнать, насколько она совместима с 484 и т. Д.
https://docs.python.org/3/library/collections.abc.html#module-collections.abc имеет некоторые абстрактные определения, которые, я считаю, используются typing
. Я никогда не использовал их. Они предназначены главным образом для людей, разрабатывающих новые классы объектов, а не «обычных» пользователей.
Тег typing
для этого вопроса, вероятно, не очень хорошая идея. У него мало последователей, и он слишком общий. Он не относится к этому модулю Python.
Искать [python] 484
для других вопросов, касающихся этого стиля аннотаций.
https://github.com/python/typing - typing
репозиторий развития.
В этом репозитории есть определение FrozenSet
в файле python2/typing.py
(python2 backport), но не в src/typing.py
. Я не уверен в значении этого.
Привет, спасибо за ваш ответ. Теперь у меня есть более ясные идеи (я знал о различии между типами аннотаций и объектами, но не знал о том, как набирать команды mypy vs python3.5). Однако я просмотрел документацию и не смог найти ссылку на FrozenSet, о которой упоминалось в PEP 484. Я что-то упустил? – marcotama
Похоже, что они не добавили 'FrozenSet' в' typing'. Многие из классов в 'typing' отображаются на' collections.abc', которые имеют такие вещи, как 'MutableSet' и' AbstractSet', но не 'FrozenSet'. Таким образом, на данный момент «FrozenSet» - это просто идея в PEP, не более того. – hpaulj
Для модуля 'typing' существует репозиторий github. Изучите это, чтобы узнать, что можно добавить в будущем. – hpaulj