Анотация типов

Аннотации типов – это способ объявить ожидаемые типы аргументов и возвращаемого значения функции, переменных и атрибутов.

Допустимые значения анотации типов

  • конкретный класс, например str или FrenchDeck;

  • параметризованный тип коллекции, например list[int], tuple[str, float] и т. д.;

  • typing.Optional, например Optional[str], для объявления поля, которое может принимать значения типа str или None.

  • Переменную можно также инициализировать значением. (var_name: some_type = a_value)

[!info] Важно на этапе импорта, когда модель загружается, Python читает их и строит словарь annotations, который typing.NamedTuple и @dataclass затем используют для дополнения класса.

class DemoPlainClass:
	a: int # заносится в анотацию
	b: float = 1.1 # заносится в анотацию и проставляется значение атрибуту класса
	c = 'spam' # обычный атрибут класса, а не анотация
1234
  • Для поля a заводится запись в __annotations__, но больше оно никак не используется: атрибут с именем a в классе не создается.

  • Поле b сохраняется в аннотациях и, кроме того, становится атрибутом класса со значением 1.1.

  • c – это самый обычный атрибут класса, а не аннотация

Last updated