无法设置属性和无限递归

时间:2014-01-31 02:28:26

标签: python python-2.7

我试图使用属性来获取类变量的值,但是下面的代码导致错误“无法设置属性”错误并删除行self.var3 = var3导致无限递归。我想我对财产了解不多,有人可以指出这里出了什么问题。

class Parent(object):
    def __init__ (self, var1=None, var2=None):
        self.var1=var1 
        self.var2=var2

class Child(Parent):
    def __init__(self, var1, var2, var3):
        super(Child, self).__init__(var1=var1, var2=var2)
        self.var3=var3

    @property
    def var3(self):
        return self.var3

c1 = Child(6, 7, 8)
c2 = Child(1, 2, 3)
print c1.var1, c1.var2, c1.var3
print c2.var1, c2.var2, c2.var3

1 个答案:

答案 0 :(得分:4)

您需要为属性与属性使用不同的名称:

class Child(Parent):
    def __init__(self, var1, var2, var3):
        super(Child, self).__init__(var1=var1, var2=var2)
        self._var3=var3     # added underscore

    @property
    def var3(self):
        return self._var3   # same underscore here

输出:

>>> print c1.var1, c1.var2, c1.var3
6 7 8
>>> print c2.var1, c2.var2, c2.var3
1 2 3