__getattribute__ 방법에서 속성에 액세스하는 방법 :파이썬 : 나는 다음과 같은 클래스가
class StrLogger(str):
def __init__(self, *args):
self._log_ = []
str.__init__(self, *args)
def __getattribute__(self, attr):
self._log_.append((self.__name__, attr))
return str.__getattribute__(self, attr)
나는 slog = StrLogger('foo')
와 StrLogger
을 초기화 할 수 있습니다 나는 str
에서 상속 된 모든 메소드에 액세스 할 수 있으며 더으로 실행하지 문제. 문제는 slog._log_
또는 slog.__dict__['_log_']
으로 로그를 검색하려고 시도 할 때 __getattribute__
메서드가 무한 재귀에서 멈추는 것입니다. 왜 이런 일이 벌어지고 있는지 이해하지만 내 질문은 어떻게 로그에 액세스 할 수 있습니까?
이 감사 결과 실행! 지금 재귀는 로깅 중에'_log_'에 접근함으로써 발생했습니다. 아직도 다른 속성에 액세스 할 때 로깅 자체가 작동한다는 것이 나에게 당황 스럽습니다. – Matt