필드 선언에서 반복 메서드를 만든다
@dataclass는 어노테이션된 필드로 __init__, repr, eq 같은 데이터 객체의 기본 메서드를 만들어. 상태를 담는 레코드라면 손으로 같은 코드를 되풀이할 필요가 없어.
옵션은 객체 계약을 드러내
frozen은 필드 재할당을 막고, kw_only는 이름으로만 생성하게 하며, order는 필드 순서로 비교를 만들어. field(default_factory=list)는 인스턴스마다 새 가변값을 줘.
__post_init__에서 검증하고 파생값을 만든다
자동 초기화 뒤에 실행되므로 필드 사이 조건을 확인하거나 계산된 값을 세울 수 있어. 행동과 수명 규칙이 많아지면 평범한 클래스로 돌아가는 편이 더 솔직해.