以下代码无法正常工作。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
您使用的是Python 2.x。类需要直接或通过继承链从object
继承,类系统的大多数新功能才能正常工作。
不确定为什么一次使用decorator表单而另一次不使用。最好两次都用:
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
继承。