Следующая:Python __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.
Для меня, он печатает только 'Assigned attribute' один раз. –
Я не могу воспроизвести это с помощью python 2.5, 2.6 или 3.1. Попробуйте «print» искать «attr» после строки def \ _ \ _ getattr \ _ \ _, чтобы увидеть, что нужно. –
Хорошо, это странно. Он три раза печатался в консоли Eclipse, но с использованием интерпретатора из командной оболочки он ведет себя правильно. –