提问人:Some Name 提问时间:2/1/2020 更新时间:2/1/2020 访问量:6714
是否有必要在 python 中显式调用 super().__init__()?
Is it necessary to call super().__init__() explicitly in python?
问:
我来自Java,在那里我们可以避免调用超类零参数构造函数。对它的调用由编译器隐式生成。
我读了这篇关于 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?
答:
20赞
tripleee
2/1/2020
#1
如果重写超类的方法,则子类的方法需要显式调用它,如果这是预期的行为,是的。__init__
__init__
你的心智模型不正确;它不是构造函数方法,而是构造函数方法调用的钩子,可让您轻松自定义对象初始化。(实际的构造函数是被调用的,但你不需要知道这一点,而且可能永远不需要直接与它交互,更不用说更改它了。__init__
__new__
评论