dataclass는 Python 3.7에 추가된 「데이터 위주의 클래스를 매우 짧게 만들어 주는」 도구입니다.
__init__, __repr__, __eq__ 같은 보일러플레이트 메서드를 자동으로 생성해 줍니다.
기본 사용.
from dataclasses import dataclass.
@dataclass.
class Person: name: str; age: int; city: str = "서울".
단 4줄로 일반 클래스로 20줄 가까이 써야 할 일이 끝납니다.
자동으로 __init__, __repr__, __eq__가 생성됩니다.
사용 예시.
p = Person("홍길동", 30) — 자동 __init__.
print(p) — 「Person(name='홍길동', age=30, city='서울')」 자동 __repr__.
p1 == p2 — 모든 필드가 같으면 True 자동 __eq__.
일반 클래스라면 모두 직접 구현해야 합니다.
추가 옵션.
@dataclass(frozen=True) — 불변(필드 변경 시 오류).
@dataclass(order=True) — 비교 연산자(<, >) 자동 생성.
field(default_factory=list) — 가변 기본값(매 인스턴스마다 새 리스트).
이 옵션들로 다양한 패턴을 표현할 수 있습니다.
비유하자면 dataclass는 「클래스의 자동 양식」과 같습니다.
「이름·나이·도시 정보를 담는 사람 양식」이라 정의만 하면 「이름 받기·등록하기·출력하기·비교하기」가 자동으로 만들어집니다.
데이터 처리·API 응답·설정 객체에 매우 자주 씁니다.
한 줄 요약
@dataclass 한 줄로 __init__·__repr__·__eq__를 자동 생성해 데이터 위주 클래스를 매우 짧게 만들 수 있습니다.
frozen·order·field로 다양한 패턴을 표현합니다.
더 알아볼 것
- dataclasses.field — 가변 기본값과 메타데이터
- Pydantic — 더 강력한 데이터 검증
- attrs — dataclass의 선구자