Mediumnamedtuple

Что такое collections.namedtuple?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

namedtuple — фабрика tuple-классов с именованными полями. Immutable как tuple, с доступом по имени. Self-documenting код (p.x вместо p[0]), memory как tuple.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
p.x        # 1
p[0]       # 1 (работает как tuple)
x, y = p   # unpacking

p._replace(x=10)   # copy с изменённым полем
p._asdict()        # {'x': 1, 'y': 2}

# typing.NamedTuple — с type hints (Python 3.6+)
from typing import NamedTuple
class Point(NamedTuple):
    x: int
    y: int = 0
  • hashable (если поля hashable), работает как tuple;
  • Когда: immutable value object с known fields;
  • dataclass(frozen=True) — mutable аналог с большей гибкостью.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.