Python객체지향

dataclass 기본

반복적인 초기화 코드 없이 데이터를 담는 클래스를 간결하게 정의하는 Python dataclass 기본 패턴입니다.

마지막 수정 2026년 3월 19일

기본 패턴

python
from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

설명

  • dataclass는 데이터를 보관하는 목적의 클래스를 더 간결하게 정의하게 해 줍니다.
  • 필드만 선언해도 __init__, __repr__, 비교 메서드 같은 반복 코드를 자동으로 만들어 줍니다.
  • 단순한 데이터 묶음, 설정 객체, 전송용 구조를 만들 때 특히 편합니다.
  • 일반 클래스가 더 적절한지, dataclass가 더 적절한지는 "상태와 행동 중 무엇이 중심인가"로 판단하면 좋습니다.

짧은 예제

python
from dataclasses import dataclass

@dataclass
class Student:
    name: str
    score: int

student = Student("Mina", 95)
print(student)

빠른 정리

요소역할
@dataclassdataclass 동작 활성화
필드 선언저장할 데이터 정의
자동 __init__생성자 자동 생성
자동 __repr__출력 표현 자동 생성

공식 참고: dataclasses — Data Classes

주의할 점

dataclass는 매우 편리하지만, 복잡한 동작과 캡슐화가 핵심인 클래스를 모두 dataclass로 바꾸는 것은 좋지 않습니다. 데이터 중심 구조에서 특히 강합니다.