• 菱形继承


    1,菱形继承

    当一个子类继承多个父类时,多个父类最终继承了同一个类。称之为菱形继承

    2.菱形继承的问题:

    python2区分经典类与新式类,如果子类的继承是一个菱形继承,那么经典类与新式类的区别为?

    经典类下查找属性:深度优先查找,一条道走到底。

    新式类下查找属性:广度优先查找

    3.例如:

    class G(object):
    # def test(self):
    # print('from G')
    pass

    class E(G):
    # def test(self):
    # print('from E')
    pass

    class B(E):
    # def test(self):
    # print('from B')
    pass

    class F(G):
    # def test(self):
    # print('from F')
    pass

    class C(F):
    # def test(self):
    # print('from C')
    pass

    class D(G):
    # def test(self):
    # print('from D')
    pass

    class A(B,C,D):
    def test(self):
    print('from A')
    # pass

    obj=A()
    print(A.mro()) #mro是一个内置的继承查找的算法
    # obj.test() #A->B->E-C-F-D->G-object
    查找的时候,先从对象里找test,没有的话再去类里找,类里没有,再去父类里找
  • 相关阅读:
    js键盘事件以及键盘事件拦截
    JavaScript 延迟加载
    二叉树深度优先 求二叉树最大深度
    css 小知识点:inline/inline-block/line-height
    es6 set
    CSS 水平垂直居中
    js 位运算符
    js 函数重载
    js之单例模式
    js 面向对象 ES5 AND ES6
  • 原文地址:https://www.cnblogs.com/fxc-520520/p/9234346.html
Copyright © 2020-2023  润新知