collections.namedtuple
Фабрика, создающая подкласс кортежа с доступом к полям по имени, а не только по индексу.
Сигнатура
collections.namedtuple(typename, field_names)namedtuple даёт читаемый и неизменяемый «лёгкий объект» без написания класса. Поля доступны и по индексу, и по имени; метод _replace создаёт копию с изменённым полем, _asdict — словарь.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p.x, p.y) # 3 4
print(p[0]) # 3
q = p._replace(y=10)
print(q) # Point(x=3, y=10)
print(p._asdict()) # {'x': 3, 'y': 4}