Python 类中super的作用

super的作用: 按照self对象人性类的的mro顺序,执行该类的下一个类。

class A:

    def f1(self):
        print('In a')


class Foo(A):

    def f1(self):
        super(Foo, self).f1()
        print('In Foo')


class Bar(A):

    def f1(self):
        print('In Bar')


class Info(Foo, Bar):

    def f1(self):
        super(Info, self).f1()
        print('In Info')

"""
print(Info.mro())
[Info,Foo,Bar, A,object]

super 按照self对象继承类的的mro顺序,执行info类的下一个类
"""
obj = Info()
obj.f1()

我们通过Info.mro()得到继承顺序 为Info, Foo, Bar, A, object

分析:

当obj.f1()调用时,即执行info.f1() 此时super(Info, self).f1(), 根据mro顺序,走到Foo类,执行f1,此时Foo类的super(Foo, self)中的self仍为obj,那么下一个为Bar, 执行Bar中的f1, 打印In bar, 然后会执行Foo中super的下一句 In Foo, 最后执行 In Info, 看运行结果:

(drf) andy@Andy963:/mnt/c/Users/Andy/Desktop$ python code.py
In Bar
In Foo
In Info

 

上一篇:Python 元组

下一篇:Python 字典