【发布时间】:2013-05-19 11:44:38
【问题描述】:
我是一名 Java 程序员,是 Python 编程的初学者。我注意到 python 编程中的意外行为。我期待打印序列为B class ,A Class 构造函数。但它只执行 A 的构造函数。
输出为“它的A的构造函数”,请你帮我理解执行流程。提前致谢
class B:
def __init__(self):
print 'Its constructor of B'
class A(B):
def __init__(self):
print 'Its constructor of A'
#B.__init__(self)
if __name__=='__main__':
obj=A()
【问题讨论】:
-
这就是 Python 的工作方式。 IIRC,即使在 Java 中,如果您要扩展其构造函数带有参数的类,则必须显式调用
super(<params>)。唯一的区别是对于不带参数的超类,在 Java 中调用super()是可选的,而在 Python 中则必须显式调用它。 -
显式优于隐式。 python.org/dev/peps/pep-0020
标签: python class python-2.7 constructor