인스턴스도 호출할 수 있어
클래스의 __init__에서 꾸밀 함수를 받고 __call__에서 실제 호출을 처리하면 그 인스턴스가 데코레이터이자 래퍼가 돼. 호출 횟수, 캐시, 통계, 초기화 메서드처럼 여러 상태와 행동을 한 객체에 모을 수 있어.
메타데이터는 직접 보존해
함수형 래퍼의 wraps 대신 functools.update_wrapper(self, fn)로 인스턴스에 원래 함수 정보를 옮겨. 설정을 받는 클래스 데코레이터라면 생성 단계와 함수 결합 단계도 분리해야 해.
작은 상태라면 클로저가 더 가볍다
카운터 하나 때문에 클래스의 수명과 인터페이스를 만들 필요는 없어. 상태를 조회·초기화하거나 여러 메서드가 함께 지킬 규칙이 생길 때 클래스로 올려.