提问人:gebruiker 提问时间:12/24/2022 更新时间:12/24/2022 访问量:249
如何将类参数的默认值设置为另一个类实例,该类实例在 Python 中具有自己的默认参数 [duplicate]
How to set the default of a class parameter to another class instance which has its own default parameters in Python [duplicate]
问:
我正在尝试将一个类的默认变量设置为另一个类的某个实例,该类具有自己的默认参数。然后我面临的问题是,将参数设置为默认值似乎不会创建新实例。
这就是我的意思:
class TestA:
def __init__(self, x = 2):
self.x = x
class TestB:
def __init__(self, y = TestA()):
self.y = y
现在当我跑步时
>>>> t = TestB()
我得到了我所期望的:.据我所知,发生的事情是那个集合,并且由于没有参数调用,所以它集合了 .
最后我跑了.t.y.x = 2
__init__
t.y = TestA()
TestA()
t.y.x = 2
t.y.x = 7
在下一步中,我这样做:
>>>> s = TestB()
>>>> s.y.x
7
我预料到.s.y.x == 2
更是如此,因为当我只是使用 时,那么TestA
>>>> a = TestA()
>>>> a.x = 7
>>>> b = TestA()
>>>> b.x
2
为什么它没有按预期工作?t
s
另外,我怎样才能正确使用这样的结构,其中 for 属性的默认值是 的实例,而 attribute 的默认值是 .y
TestA
x
答:
1赞
rzz
12/24/2022
#1
它占用了 dafault 参数在 Python 中的工作方式。
您可以使用此方法:
class TestA:
def __init__(self, x=2):
self.x = x
class TestB:
def __init__(self, y=None):
if y is None:
y = TestA()
self.y = y
评论
def
值时。