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

Does anybody has a good example of how to use super() to Pass Control to Other Classes?

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


通常可以通过执行Parent.foo(self, ...)直接调用父类方法,但在多个继承的情况下,super()更有用;而且,即使使用单个继承,super()也可以帮助您不强制将父类硬编码到子类中,因此,如果更改它,使用super()的调用将继续进行。工作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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

您可以在文档中通过谷歌搜索"diamond inheritance"或"diamond inheritance python"找到更多信息。