다음은 다음과 같습니다.파이썬 __getattr__ 동작? ECLIPSE/PyDev 콘솔에서?
class A(object):
def __getattr__(self, attr):
try:
return self.__dict__[attr]
except KeyError:
self.__dict__[attr] = 'Attribute set to string'
print 'Assigned attribute'
return self.__dict__[attr]
는 다음을 반환합니다.
obj = A()
obj.foo
Assigned attribute
Assigned attribute
Assigned attribute
'Attribute set to string'
마술은 어디에서 발생합니까?
(2.6.6에 있습니다.)
편집 : 의견을 보내 주셔서 감사합니다. 실제로이 문제는 Python 명령 줄 자체에서 재현 할 수 없습니다. Eclipse/PyDev에서 콘솔을 사용할 때만 발생하는 것 같습니다.
를, 그것은 단지'한 번 attribute'을 할당 인쇄합니다. –
파이썬 2.5, 2.6 또는 3.1에서는 이것을 재현 할 수 없습니다. def \ _ \ _ getattr \ _ \ _ 라인 다음에 ', attr "을 찾는"print "를 시도하여 원하는 것을보십시오. –
이것은 이상합니다. 이클립스 콘솔에서 세 번 출력했지만 명령 쉘에서 인터프리터를 사용하면 제대로 동작한다. –