namedtuple은 「튜플의 효율 + 이름의 가독성」을 결합한 자료구조입니다.
(3, 4)처럼 점수 위치만 의미가 있는 튜플 대신 「Point(x=3, y=4)」처럼 이름으로 접근할 수 있게 해 줍니다.
기본 사용.
from collections import namedtuple.
Point = namedtuple("Point", ["x", "y"]).
p = Point(3, 4).
p.x — 3, p.y — 4.
일반 튜플처럼 p[0], p[1]도 가능하지만 .x, .y가 훨씬 읽기 쉽습니다.
활용 예시.
Person = namedtuple("Person", ["name", "age", "city"]).
people = [Person("홍길동", 30, "서울"), Person("김철수", 25, "부산")].
for p in people: print(p.name, p.age) — 점수 인덱스가 아닌 이름으로 접근.
namedtuple의 장점은 「불변·메모리 효율 + 자기 설명적 코드」입니다.
일반 클래스를 만드는 것보다 훨씬 가벼우면서, 이름 접근 덕분에 코드 의도가 분명합니다.
데이터베이스 결과·API 응답·좌표 같은 작은 데이터 묶음에 딱 맞습니다.
더 현대적인 대안으로 Python 3.7+의 dataclass와 typing.NamedTuple이 있습니다.
typing.NamedTuple은 namedtuple에 타입 힌트를 더한 형태로 권장되며, dataclass는 가변·메서드 추가가 자유로운 만능 옵션입니다.
데이터 위주의 작은 클래스에는 dataclass, 불변성이 중요하면 NamedTuple이 자주 선택됩니다.
한 줄 요약
namedtuple은 이름으로 접근 가능한 튜플로, 일반 튜플의 효율을 유지하면서 가독성을 끌어올립니다.
현대적 대안은 typing.NamedTuple과 dataclass입니다.
더 알아볼 것
- typing.NamedTuple — 타입 힌트 추가
- dataclass와의 비교
- _replace, _asdict 메서드