Python @property 装饰器不起作用
Posted
技术标签:
【中文标题】Python @property 装饰器不起作用【英文标题】:Python @property decorator not working 【发布时间】:2014-03-03 11:39:47 【问题描述】:谁能发现这个@property 装饰器有问题?我似乎无法让它正确断言。我确定我做错了一些非常简单的事情,但是谁能把我疲惫的眼睛指向正确的方向?
class A:
def __init__(self):
self.a = 0
self._b = 0
@property
def b(self):
return self.b
@b.getter
def b(self):
if self._b is None:
return 0
return self._b
@b.setter
def b(self, val):
self._b = (val * 20)
def test_getter_setter():
obj = A()
obj.a = 1
#obj.b = 2
print obj.a, obj.b
obj.b = 2
print obj.a, obj.b
assert obj.b == 40
test_getter_setter()
【问题讨论】:
【参考方案1】:@property
装饰器仅适用于新样式类。继承自object
:
class A(object):
通过该更改,您的测试功能通过。
【讨论】:
我所有的悲伤都神奇地消失了!谢谢,Martijn 博士! 不是所有的python类都应该自动继承自对象吗?以上是关于Python @property 装饰器不起作用的主要内容,如果未能解决你的问题,请参考以下文章