Som*_*ame 2 python inheritance constructor class python-3.x
我来自 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?
Run Code Online (Sandbox Code Playgroud)
如果你覆盖__init__
超类的__init__
方法,那么子类的方法需要显式调用它,如果这是预期的行为,是的。
你的心智模型__init__
不正确;它不是构造函数方法,它是构造函数方法调用的一个钩子,可以让您轻松自定义对象初始化。(调用了实际的构造函数,__new__
但您不需要知道这一点,并且可能永远不需要直接与它交互,更不用说更改它了。)
归档时间: |
|
查看次数: |
1051 次 |
最近记录: |