Python Glossary English

все 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Сообщить о неточности