将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
,幕后会发生什么?
感谢。
答案 0 :(得分:1)
在单继承的情况下,绝对没有。 object.__init__()
蹲下来。
如果是multiple inheritance,则不会调用整个chain of initialization。这对你的应用程序有什么不同,但它通常不是一件好事。