Python Glossary English

все Python 3Кортежи (tuple)понятие

Наименованный кортеж namedtuple

namedtuple

namedtuple создаёт класс кортежа с именованными полями. Поля доступны по имени и по индексу.

Синтаксис

from collections import namedtuple
NT = namedtuple('NT', ['field1', 'field2'])

Это по-прежнему кортеж: полю нельзя присвоить новое значение, изменённую копию делают через _replace(). Подчёркивание в _replace, _asdict и _fields не означает «приватный метод» — так сделано, чтобы имена методов не столкнулись с именами ваших полей. При сравнении namedtuple равен обычному кортежу с теми же значениями, поэтому == не отличит Point(1, 2) от (1, 2).

Примеры

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p)
# → Point(x=3, y=4)
print(p.x, p.y)
# → 3 4
print(p[0], p[1])
# → 3 4 (доступ по индексу)
print(p._asdict())
# → {'x': 3, 'y': 4}
p2 = p._replace(x=10)
print(p2)
# → Point(x=10, y=4)
print(Point._fields)
# → ('x', 'y')
from collections import namedtuple
Card = namedtuple('Card', 'rank suit')
c = Card('A', 'spades')
print(f'{c.rank} of {c.suit}')
# → 'A of spades'

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности