从对象继承的类中的super()和__init __()的行为是什么?

时间:2016-04-03 13:31:52

标签: python inheritance language-implementation

将python 2.7与新的类样式一起使用,如果我的类继承自Object类,那么super(ClassName, self).__init__()的行为是什么?我的意思是,幕后会发生什么?如果省略它会有什么区别?

上面的一个例子:

  class ClassName(object):
    """docstring for ClassName"""
    def __init__(self, arg):
        super(ClassName, self).__init__() ## The question above is about this super
        self.arg = arg


  class OtherClass(ClassName):
    """docstring for OtherClass"""
    def __init__(self, arg, otherArg):
        super(OtherClass, self).__init__(arg) ## The question below is about this super
        self.otherArg = otherArg

如果我省略super,幕后会发生什么?

感谢。

1 个答案:

答案 0 :(得分:1)

在单继承的情况下,绝对没有。 object.__init__()蹲下来。

如果是multiple inheritance,则不会调用整个chain of initialization。这对你的应用程序有什么不同,但它通常不是一件好事。