有没有人有一个很好的例子,说明如何使用super()将控制权传递给其他类?

时间:2013-09-01 12:23:22

标签: python super

我刚刚了解到super()允许您从子类中的重写方法中调用基类中的方法。但是你能用一个很好的例子向我解释一下吗?

1 个答案:

答案 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搜索“钻石继承”或“钻石继承蟒蛇”。