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 подскажет развёрнутый ответ в реальном времени.