为什么使用 super()
?
使用 Base.__init__
和 super().__init__
有区别吗?
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()
原文由 Mizipzor 发布,翻译遵循 CC BY-SA 4.0 许可协议
super()
让您避免显式引用基类,这很好。但主要优势来自于多重继承,在这里可以发生各种 有趣 的事情。如果您还没有,请参阅 super 上的标准文档。请注意, Python 3.0 中的语法发生了变化:您可以只说
super().__init__()
而不是super(ChildB, self).__init__()
IMO 更好一些。标准文档还参考了使用 指南super()
非常具有解释性。