gpt4 book ai didi

python - 是否有必要在 python 中显式调用 super().__init__() ?

转载 作者:行者123 更新时间:2023-12-04 16:00:13 25 4
gpt4 key购买 nike

我来自 Java,在那里我们可以避免调用父类(super class)零参数构造函数。对它的调用是由编译器隐式生成的。

我读了 this post about super()现在的问题是是否真的有必要明确地做这样的事情:

class A(object):
def __init__(self):
print("world")

class B(A):
def __init__(self):
print("hello")
super().__init__() #Do we get some Undefined Behavior if we do not call it explicitly?

最佳答案

如果您覆盖 __init__父类(super class)的方法,然后是 __init__如果这是预期的行为,子类的方法需要显式调用它,是的。

你的心智模型 __init__是不正确的;它不是构造函数方法,它是构造函数方法调用的一个钩子(Hook),可以让您轻松自定义对象初始化。 (实际的构造函数称为 __new__,但您不需要知道这一点,并且可能永远不需要直接与它交互,更不用说更改它了。)

关于python - 是否有必要在 python 中显式调用 super().__init__() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60015319/

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