不知道为什么@property不起作用



以下代码无法正常工作。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继承。

相关内容

最新更新