当我们声明子类的对象时,为什么不调用超类的构造函数?

时间:2013-05-19 11:44:38

标签: python class python-2.7 constructor

我是一名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()

1 个答案:

答案 0 :(得分:1)

在python中你应该调用父的初始化器(实际调用__init__方法的方式, - “构造函数”是显式的。)

你可以像在注释掉的行中那样做。更好的是,您应该使用super函数来确定哪个父级要为您访问。它只适用于new-style classes(基本上,这意味着,类层次结构的根必须从object继承)。