На этом шаге мы рассмотрим особенности этого класса.
Этот класс был добавлен в Python 3.6 и является младшим братом класса namedtuple в модуле collections.
См. документацию Python "typing.NamedTuple": https://docs.python.org/3.6/library/typing.html.
Он очень похож на namedtuple, и его главное отличие состоит в том, что у него есть обновленный синтаксис для определения новых типов записей и добавленная поддержка подсказок при вводе исходного кода.
Кроме того, обратите внимание, что сигнатуры типов не поддерживаются без отдельного инструмента проверки типов, такого как mypy. Но даже без инструментальной поддержки они могут предоставлять полезные подсказки для других программистов (или могут быть ужасно запутанными, если подсказки в отношении типов становятся устаревшими).
>>> from typing import NamedTuple >>> class Car(NamedTuple): цвет: str пробег: float автомат: bool >>> car1 = Car('красный', 3812.4, True) # Экземпляры имеют хороший метод repr: >>> car1 Car(цвет='красный', пробег=3812.4, автомат=True) # Доступ к полям: >>> car1.пробег 3812.4 # Поля неизменяемы: >>> car1.пробег = 12 Traceback (most recent call last): . . . . AttributeError: can't set attribute >>> car1.лобовое_стекло = 'треснутое' Traceback (most recent call last): . . . . AttributeError: 'Car' object has no attribute 'лобовое_стекло' # Аннотации типа не поддерживаются без отдельного # инструмента проверки типов, такого как mypy: >>> Car('красный', 'НЕВЕЩЕСТВЕННЫЙ', 99) Car(цвет='красный', пробег='НЕВЕЩЕСТВЕННЫЙ', автомат=99)
На следующем шаге мы рассмотрим класс struct.Struct.