Dataclasses
1. Dataclasses
dataclass는 Python 3.7에서 도입된 기능으로, 데이터를 저장하고 처리하기 위한 클래스를 효율적으로 생성할 수 있게 해주는 기능입니다. 주로 데이터 모델링에 사용되며, 반복적인 코드(보일러플레이트)를 줄여주는 역할을 합니다.
1.1 기본 사용법
일반적인 클래스와 dataclass의 차이를 비교해보겠습니다.
# 일반적인 클래스 정의
class User:
def __init__(self, id, name, email):
self.id = id
self.name = name
self.email = email
def __repr__(self):
return f"User(id={self.id}, name={self.name}, email={self.email})"
def __eq__(self, other):
if not isinstance(other, User):
return NotImplemented
return (self.id, self.name, self.email) == (other.id, other.name, other.email)
# 일반적인 클래스 정의
class User:
def __init__(self, id, name, email):
self.id = id
self.name = name
self.email = email
def __repr__(self):
return f"User(id={self.id}, name={self.name}, email={self.email})"
def __eq__(self, other):
if not isinstance(other, User):
return NotImplemented
return (self.id, self.name, self.email) == (other.id, other.name, other.email)
1.2 주요 기능
1.2.1 기본값 설정
1.2.2 불변 객체 생성
1.3 고급 기능
1.3.1 필드 옵션 설정
dataclasses.field() 함수는 dataclass 필드의 동작을 세밀하게 제어할 수 있게 해주는 다양한 옵션을 제공합니다. 주요 옵션은 다음과 같습니다.
- default: 기본값 설정
- default_factory: 기본값을 동적으로 생성
- init: 생성자에 포함할지 여부
- repr: 객체를 문자열로 표현할 때 포함할지 여부
- compare: 비교 연산자 생성 여부