property는 메서드에 속성 문법을 입혀
@property는 읽을 때 계산하거나 검증할 값을 obj.value처럼 노출해. setter와 deleter를 붙일 수 있지만, 단순 공개 필드를 이유 없이 감싸지는 마.
cached_property는 첫 결과를 인스턴스에 저장해
비싼 계산이 같은 인스턴스에서 변하지 않을 때 한 번만 계산하고 이후에는 저장된 값을 돌려줘. 입력 상태가 바뀌면 캐시를 지우거나 쓰지 않아야 해.
수신자가 필요한지로 메서드를 나눠
staticmethod는 self나 cls가 필요 없는 클래스 관련 함수고, classmethod는 cls를 받아 대안 생성자와 상속 가능한 팩토리에 알맞아. 인스턴스 상태를 쓰면 평범한 메서드가 맞아.