디스크립터는 속성 접근을 맡는 객체야
클래스 속성이 __get__, __set__, __delete__를 제공하면 obj.attr 접근이 그 메서드로 이어져. property도 이 규약으로 만들어져. 데이터 디스크립터는 인스턴스 딕셔너리보다 우선하고, 읽기 전용인 비데이터 디스크립터는 인스턴스 값에 가려질 수 있어.
__set_name__으로 자기 필드 이름을 안다
클래스 생성 시 디스크립터가 배치된 이름을 받아 인스턴스별 저장 위치와 오류 메시지를 만들 수 있어. 여러 필드의 검증 규칙을 재사용할 때 강력해.
__slots__는 허용 속성과 저장 모양을 고정해
보통 인스턴스의 __dict__를 없애 메모리를 줄이고 임의 속성 추가를 막아. 상속과 디스크립터가 섞이면 저장 위치를 신중히 설계해야 하며, 현대에는 @dataclass(slots=True)가 흔한 길이야.