Python Glossary English

Python 3.6+Аннотации и typingконструкция

Аннотация переменной

синтаксис

Запись x: int = 1 — подсказка типа для переменной или атрибута класса. Интерпретатор её не проверяет, читают её mypy, IDE и dataclass.

Синтаксис

имя: тип = значение
имя: тип

Главная ловушка: аннотация не проверяется во время выполнения — x: int = "abc" отработает без ошибки, ловит такое только mypy или IDE. Вторая: x: int без = ничего не присваивает, и обращение к x даёт NameError. В классе аннотация без значения попадает в __annotations__, но атрибутом не становится — именно эти записи читает @dataclass, чтобы построить поля.

Примеры

x: int = 'abc'
print(x)  # → abc — тип не проверяется
count: int
print(count)  # → NameError
class Point:
    x: int
    y: int = 0
print(Point.__annotations__)  # → {'x': <class 'int'>, 'y': <class 'int'>}
print(hasattr(Point, 'x'), Point.y)  # → False 0

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности