[Python] dataclass 데코레이터
dataclass는 순수한 값 객체를 정의할때 사용하는 개념이다.
파이썬은 내장모듈 dataclasses를 통해 이러한 기능을 제공한다.
지원 버전은 3.7부터다.
기본 개념
만약 좌표를 의미하는 타입을 정의한다면 이렇게 x와 y 필드가 있어야 할 것이다.
하지만 실제로는 이것만 가지고는 응용에 한계가 있다.
대소비교나, 디버깅용 출력이나, 동등 비교 같은 것들을 다 구현해줘야 타입으로서 응용이 가능하다.
저거 말고도 훨씬 많은데, 아무튼 이러한 노가다를 좀 줄여주는게 데이터클래스다.
데코레이터만 달면 저런 잡다한 연산자나 생성자를 자동으로 정의해준다.



불변성 부여
dataclass의 또 하나의 유용한 기능은 불변성 부여가 가능하다는 것이다.
파이썬은 기본적으로 함수형 프로그래밍과는 좀 동떨어져있는 언어인데도 참조가 무분별해서 무수한 사이드이펙트가 발생할 가능성이 농후하다.
이런 경우에는 아예 값을 수정하지 못하도록 고정해버리고, 재생성을 하는 식으로 유도하는 것이 관리가 용이하고 버그를 줄이기 좋다.
사용법은 간단하다. frozen 필드값을 켜주면 된다.

그러면 값을 수정하려 시도할때마다 에러를 던질 것이다.
컴파일타임이 아니라 런타임에 체크된다는 점이 좀 아쉽긴 하다.