현재 클래스 나 그 조상에 존재하지 않는 속성에 액세스하려는 시도가 구성원의 속성에 액세스하려고 시도하는 클래스를 구현하려고합니다. 아래는 내가하려고하는 사소한 버전입니다.왜 "마술처럼"불려지는 메소드에 대해 __getattr__이 호출되지 않습니까?
class Foo:
def __init__(self, value):
self._value = value
def __getattr__(self, name):
return getattr(self._value, name)
if __name__ == '__main__':
print(Foo(5) > Foo(4)) # should do 5 > 4 (or (5).__gt__(4))
그러나 이것은 TypeError
을 발생시킵니다. 심지어 operator
모듈의 attrgetter
클래스를 사용해도 똑같은 일을합니다. the documentation regarding customizing attribute access을 살펴 보았지만 쉽게 읽을 수는 없었습니다. 이 문제를 어떻게 해결할 수 있습니까?
좋은 간단한 예를 들어 주셔서 감사합니다.하지만 '바'의 요점은 무엇입니까? 당신의 질문은 그것없이 다르지 않습니다. –
@ ron.rothman, * shrugs shoulders * 내 코드가하는 기본적인 요지입니다. 나는 그것을 더 단순화했다. :) –
또한 속성은 int가 아닌 문자열입니다. 'Foo (5)'를 사용하면 아마도 둘을 하나로 묶어 놓았을 것입니다. –