我刚刚了解到super()
允许您从子类中的重写方法中调用基类中的方法。但是你能用一个很好的例子向我解释一下吗?
答案 0 :(得分:1)
通常你可以通过Parent.foo(self, ...)
直接调用父类方法,但是在多重继承的情况下,super()
更有用;另外,即使使用单一继承,super()
也不会强迫您将父类硬编码到子类中,因此如果您更改它,使用super()
的调用将继续工作。
class Base(object):
def foo(self):
print 'Base'
class Child1(Base):
def foo(self):
super(Child1, self).foo()
print 'Child1'
class Child2(Base):
def foo(self):
super(Child2, self).foo()
print 'Child2'
class GrandChild(Child1, Child2):
def foo(self):
super(Child2, self).foo()
print 'GrandChild'
Base().foo()
# outputs:
# Base
Child1().foo()
# outputs:
# Base
# Child1
Child2().foo()
# outputs:
# Base
# Child2
GrandChild().foo()
# outputs:
# Base
# Child1
# Child2
# GrandChild
您可以在文档中找到更多信息,也可以通过Google搜索“钻石继承”或“钻石继承蟒蛇”。