Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 17, 2016 18:48:29

dremdem
Зарегистрирован: 2015-12-29
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

property decorator и переменные типа _x

Шалом православные!

Опять я и опять с нубскими вопросами

Пользовался тут некоторое время @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 уже можно и не )

Вообщем оставлю это здесь, не зря же столько писал )

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version