파이썬 데이터 모델 덕분에 사용지기 정의한 자료형도 내장 자료형과 마찬가지로 자연스럽게 동작을 할 수 있는데
상속하지 않고도 덕 타이핑 매커니즘을 통해서 이 모든 것이 가능하고, 단지 객체에 필요한 메서드를 구현하면 기대한 대로 동작한다.
지금까지 여러 내장 객체의 구조와 동작에 대해 설명했고, 이제 실제 파이썬 객체와 동일하게 동작하는 사용자 정의 클래스르 만들어보자.
먼저 1장에 이어 여러 파이썬 객체에서 흔히 볼 수 있는 여러 가지 특별 메서드를 구현하는 방법을 보여준다.
repr(), bytes() 등 객체를 다른 방식으로 표현하는 내장 함수의 지원
클래스 메서드로 대안 생성자 구현
format() 내장 함수와 str.format() 매서드에서 사용하는 포맷 언어 확장
읽기 전용 접근만 허용하는 속성 제공
집합 및 딕셔너리 키로 사용할 수 있도록 객체를 해시 가능하게 만들기
Slots를 이용해서 메모리 절약하기
repr(): 객체가 개발자가 보고자 하는 형태로 표현한 문자열로 반환한다.
str(): 객체를 사용자가 보고자 하는 형태로 표현한 문자열로 반환한다.
물론 repr()과 str()메서드를 지원하려면 repr() 과 str() 특별 메서드를 구현해야 한다.
객체를 표현하는 다른 방법을 지원하는 bytes() 와 format() 두 개의 특별 메서드도 있으므로 bytes()는 str과 비슷하지만 bytes() 메서드에 의해 호출되어 객체를 바이트 시퀀스로 표현하므로 format()는 내장 함수 format()과 str.format() 메서드 둘 다 사용하며, 특별 포맷 코드를 이용해서 객체를 표현하는 문자열을 반환한다.