我试图使用属性来获取类变量的值,但是下面的代码导致错误“无法设置属性”错误并删除行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
答案 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