데이터 중심 클래스를 간결하고 안전하게 작성합니다.
@dataclass는 타입 힌트가 있는 필드에서 __init__, __repr__, __eq__ 같은 반복 코드를 생성합니다. frozen=True는 속성 재대입을 막아 값 객체를 표현하고 field로 기본 생성 규칙을 지정합니다.
예제에서 @dataclass(frozen=True) 부분부터 찾으세요. 값을 만드는 표현식과 그 값을 다음 문장으로 넘기는 흐름을 한 줄씩 따라가면 실행 결과를 스스로 설명할 수 있습니다.
리스트 기본값은 field(default_factory=list)를 사용해야 인스턴스마다 새 리스트가 생깁니다. __post_init__에서 여러 필드에 걸친 검증을 수행할 수 있습니다.
API 요청과 도메인 모델의 요구사항이 다르면 하나의 dataclass를 모든 계층에서 재사용하지 말고 경계별 모델을 구분합니다.
이 코드는 브라우저의 실제 Python에서 실행됩니다. 먼저 현재 결과를 확인한 뒤 level이 허용된 값인지 __post_init__에서 검증하세요.
created_at=datetime.now() 같은 기본값도 정의 시 한 번 평가되므로 default_factory를 사용합니다.
직접 바꿔보세요level이 허용된 값인지 __post_init__에서 검증하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.