Опять я и опять с нубскими вопросами
Пользовался тут некоторое время @property и в ус, как говорится не дул, пока не посмотрел Неплохой такой гайд по рефакторингу
Начал примерчики оттуда запускать и наткнулся на вот што:
class A: @property def z(self): return 100 a = A() print 'OK z=%s' % a.z a.z = 200 print 'WTF where is my attribute error, z=%s' % a.z
выдает :
OK z=100 WTF where is my attribute error, z=200
При этом:
class A(object): @property def z(self): return 100 a = A() print 'OK z=%s' % a.z a.z = 200 print 'WTF where is my attribute error, z=%s' % a.z
по человечески выдает мне:
OK z=100 Traceback (most recent call last): File "60_property.py", line 10, in <module> a.z = 200 AttributeError: can't set attribute
Где тут собака порылась ?
В оф. доке: …. ой.
Пока читал, понял )))
Оказывается у меня 2.7.3. и там действительно надо наследовать от (object) чтобы все было ок.
А начиная с 3 уже можно и не )
Вообщем оставлю это здесь, не зря же столько писал )