gpt4 book ai didi

python - 无法设置属性和无限递归

转载 作者:行者123 更新时间:2023-11-28 22:51:30 24 4
gpt4 key购买 nike

我正在尝试使用属性来获取类变量的值,但以下代码会导致错误“无法设置属性”错误,并且删除行 self.var3=var3 会导致无限递归。我想我对属性(property)的理解很差,谁能指出这里出了什么问题。

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

最佳答案

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

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

关于python - 无法设置属性和无限递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21471447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com