Literal
2026년 8월 28일
Literal
typing.Literal은 변수나 인자가 특정 값들 중 하나여야 한다는 타입 힌트이다.
Pythonfrom typing import Literal RowCountBand = Literal["tiny", "small", "medium", "large"]
언제 쓰나
값의 종류가 정해진 문자열/숫자 집합일 때 쓴다. 단순 str보다 좁은 타입이므로 IDE 자동완성, 정적 검사, 리팩터링에 도움이 된다.
실무에서의 쓰임
데이터/agent 상태 모델에서는 RowCountBand, ProblemType 같은 도메인 라벨을 Literal로 정의할 수 있다. 이렇게 하면 "classification", "regression", "clustering", "eda"처럼 허용되는 problem type이 코드에 명시된다.
Enum과의 선택
런타임 객체가 필요하거나 값 목록을 순회해야 하면 Enum이 맞고, "이 중 하나"만 표현하면 Literal이 가볍고 충분하다. Structured Output 스키마에서는 대부분 Literal을 쓴다 — JSON Schema의 enum으로 똑같이 변환되면서 코드가 더 얇다.
관련: TypedDict, Protocol, dataclass, Enum, TypeVar와 제네릭, Pydantic v2 메서드 사전