все Python 3collectionsпонятие
collections.namedtuple
namedtuple
Создаёт подкласс tuple с именованными полями. Поддерживает _replace() (копия с изменёнными полями) и _asdict() (в словарь).
Синтаксис
collections.namedtuple(typename, field_names)
Это настоящий кортеж, поэтому Point(1, 2) == (1, 2) даёт True, а поля можно распаковывать и перебирать в цикле — удобно, но легко нарваться на случайное равенство с обычным кортежем. Значения менять нельзя: _replace() возвращает новый объект, а не правит старый. Служебные методы начинаются с подчёркивания не по стеснительности, а чтобы не конфликтовать с вашими именами полей; если нужны изменяемость, значения по умолчанию и методы — берите dataclass.
Примеры
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y) # → 1 2
print(p._asdict()) # → {'x': 1, 'y': 2}
p2 = p._replace(x=10) # → Point(x=10, y=2)
print(p2) # → Point(x=10, y=2)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности