zoukankan      html  css  js  c++  java
  • 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'>]

  • 相关阅读:
    Python 单向循环链表
    python 单向链表实现
    Python实现栈
    单进程-非阻塞服务器
    Nginx开发从入门到精通
    Spring入门第十五课
    Spring入门第十六课
    Spring入门第十四课
    Spring入门第十三课
    Spring入门第十二课
  • 原文地址:https://www.cnblogs.com/python1988/p/11252681.html
Copyright © 2011-2022 走看看