一尘不染

使用 __init__() 方法理解 Python super()

javascript

试图了解super(). 从外观上看,两个子类都可以创建,就好了。

我很想知道以下 2 个子类之间的实际区别。

class Base(object):
    def __init__(self):
        print "Base created"

class ChildA(Base):
    def __init__(self):
        Base.__init__(self)

class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()

ChildA() 
ChildB()

阅读 194

收藏
2022-01-24

共1个答案

一尘不染

super()让您避免显式引用基类,这很好。但主要优势在于多重继承,可以发生各种有趣的事情。如果您还没有,请参阅super 上的标准文档。

请注意,Python 3.0 中的语法发生了变化super().__init__():您可以说super(ChildB, self).__init__()哪个 IMO 更好一些。标准文档还参考了使用指南,super()该指南非常易于解释。

2022-01-24