2019年7月26日 继承顺序

python 可以继承多个类。寻找方法:深度优先,广度优先 python3 是广度优先,因为都是新式类。

广度优先:一直寻找到倒数第二层B,然后再找右侧一致寻找到最顶层A。

 

对于定义的每一个类,python 会计算出一个方法解析顺序(MRO)列表,MRO标示了继承顺序。

MRO准则:

1.子类会先于父类呗检查
2.多个父类回根据他们在列表中的顺序被检查
3.如果对下一个类存在两个合法的选择,选择第一个父类

class A:
    def test(self):
        print('A')
class B(A):
    def test(self):
        print('B')
class C(A):
    def test(self):
        print('C')
class D(B):
    def test(self):
        print('D')
class E(C):
    def test(self):
        print('E')
class F(D,E):#先D,后E
    # def test(self):
    #     print('F')
    pass

f1=F()
f1.test()
print(F.mro())#MRO 继承顺序列表

》》》

D
[<class '__main__.F'>, <class '__main__.D'>, <class '__main__.B'>, <class '__main__.E'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]

 

posted @ 2019-07-26 20:24  小圣庄  阅读(120)  评论(0编辑  收藏  举报