我来自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?
如果重写__init__
超类的__init__
方法,则子类的方法需要显式调用它(如果是预期的行为),是的。
您的思维模式__init__
不正确;它不是构造函数方法,而是构造函数方法调用的一个挂钩,可让您轻松自定义对象初始化。(调用了实际的构造函数,__new__
但您不必知道这一点,并且可能永远不需要直接与之交互,更不用说对其进行更改了。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句