以下代码无法正常运行。 setlen
不会从此行调用a.length=10
class A():
def __init__(self,length=0):
self._length=length
self._area=length**2
@property
def area(self):
return self._area
def getlen(self):
return self._length
def setlen(self,x):
self._length=x
self.area=x**2
length=property(getlen, setlen)
a=A()
a.length=10
print a.area
答案 0 :(得分:3)
你在使用Python 2.x.类需要直接或通过继承链从object
继承,以使类系统的大多数新功能正常工作。
答案 1 :(得分:2)
不确定为什么你一次使用装饰器形式而不是另一个。最好两次使用它:
class A(object):
def __init__(self,length=0):
self._length=length
self._area=length**2
@property
def area(self):
return self._area
@property
def length(self):
return self._length
@length.setter
def setlen(self,x):
self._length=x
self.area=x**2
尽管如user2357112所述,问题的根源在于您不是从object
继承。