gpt4 book ai didi

python - 如何使用 Python 的 super() 更新父值?

转载 作者:太空宇宙 更新时间:2023-11-03 15:26:43 25 4
gpt4 key购买 nike

我是继承的新手,之前所有关于继承和 Python 的 super() 函数的讨论都让我有点难以理解。我目前使用以下代码来更新父对象的值。

#!/usr/bin/env python
# test.py

class Master(object):
mydata = []
def __init__(self):
s1 = Sub1(self)
s2 = Sub2(self)

class Sub1(object):
def __init__(self,p):
self.p = p
self.p.mydata.append(1)

class Sub2(object):
def __init__(self,p):
self.p = p
self.p.mydata.append(2)

if __name__ == "__main__":
m = Master()
print m.mydata

此命令行返回如下:

user@host:~$ ./test.py
[1, 2]

有没有更好的方法来使用 super() 而不是将“self”引用传递给 child ?

最佳答案

super仅适用于类继承结构,其中 Sub1Sub2Master 的子类.

在您的示例中,您使用了包含结构 Sub1Sub2Master 的属性, 你没有用 super电话。

此外,您通常真的不想将可变列表用作类属性;附加到它会全局更改列表的一个副本(在类中定义),而不是每个实例;在 Master.__init__ 中启动列表方法代替:

class Master(object):
mydata = None
def __init__(self):
self.mydata = []

__init__函数被调用以设置一个新实例,并通过将一个新的空列表分配给 self在那里,您确保每个实例都有自己的副本。

关于python - 如何使用 Python 的 super() 更新父值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5849113/

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