zoukankan      html  css  js  c++  java
  • 菱形继承问题

    #coding:utf-8  # python2中指定文件头
    '''
    1、菱形继承
    当一个子继承多个父类时,多个父类最终继承了同一个类,称之为菱形继承

    2、菱形继承的问题:
    python2区分经典类与新式类,如果子的继承是一个菱形继承,那么经典类与形式的区别为?
    经典类下查找属性:深度优先查找
    深度查找:比如A(B,C,D),深度查找就是A沿着B一路查找下去,直到世界尽头(最后一个父类),
    然后才会跳到C查找,找到最后再跳到C
    新式类下查找属性:广度优先查找
    A(B,C,D)沿着A-B 不查找最后一个,直接跳到B,不查找最后一个,跳到C,一直查找到最后。


    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()) # 查找顺序(很重要)
    # [<class '__main__.A'>, <class '__main__.B'>, <class '__main__.E'>, <class '__main__.C'>,
    # <class '__main__.F'>, <class '__main__.D'>, <class '__main__.G'>, <class 'object'>]
    # obj.test() #A->B->E-C-F-D->G-object
  • 相关阅读:
    辅助随笔:因知识点不足暂时错过的题目
    NOIP2019翻车前写(and 抄)过的代码
    NOIP2019翻车前计划以及日记
    Luogu P3706 [SDOI2017]硬币游戏
    Luogu P5296 [北京省选集训2019]生成树计数
    Luogu P3307 [SDOI2013]项链
    Gaussian整数
    Problem. S
    LOJ6696 复读机 加强版
    数据库约束
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9234119.html
Copyright © 2011-2022 走看看