python__基础 : 多继承中方法的调用顺序 __mro__方法

在多继承中,如果一个子类继承了两个平级的父类,而这两个父类有两个相同名字的方法,那么一般先继承谁,调用方法就调用先继承的那个父类的方法.如:

class A:
    def test(self):
        print('AAAAA')

class B:
    def test(self):
        print('BBBBB')

class C(A,B):
    pass

c = C()
c.test()

>>>AAAAA

可以看出,先继承了A,所以输出的是AAAAA.那么由此引出了一个问题,python解释器是如何对方法进行查找排序的,答案 __mro__ 方法 ,这个方法基于C3 算法 C3 算法基于 广度优先遍历.

posted @ 2018-12-02 11:06  cccy0  阅读(708)  评论(0编辑  收藏  举报