• 面向对象的多继承 c3算法


    经典类

      深度优先

    新式类

      广度优先 c3suanfa

      super mro顺序

    mergo 一种算法

      如果第一个节点,也是其他的继承顺序的第一个节点,或者没有在其他节点出现

      那么就把这个节点移出去,作为mro顺序的第一个节点

    mro(A) = [AO]
    # mro(B) = [B] + merge(mro(A))
    #        = [B] + merge([AO])
    #        = [BA] + merge([O])
    #        = [BAO]
    # mro(C) = [C] + merge(mro(A))
    #        = [CAO]
    # mro(D) = [D] + merge(mro(B)+mro(C) + [BC])
    #        = [D] + merge([BAO],[CAO],[BC])
    #        = [DB] + merge([AO],[CAO],[C])
    #        = [DBC] + merge([AO],[AO])
    #        = [DBCA] + merge([O],[O])
    #        = [DBCAO]
    
    # mro(A) = [AO]
    # mro(B) = [BA0]
    # mro(C) = [CA0]
    # mro(D) = [DA0]
    # mro(E) = [E] + merge(mro(B)+MRO(C)+[BC])
    # mro(E) = [E] + merge([BA0]+[CA0]+[BC])
    # mro(E) = [EB] + merge([A0]+[CA0]+[C])
    # mro(E) = [EBC] + merge([A0]+[A0])
    # mro(E) = [EBCAO]
    # mro(F) = [F] + merge(mro(C)+MRO(D)+[CD])
    # mro(F) = [F] + merge([CA0]+ [DA0]+[CD])
    # mro(F) = [FC] + merge([A0]+ [DA0]+[D])
    # mro(F) = [FCD] + merge([A0]+ [A0])
    # mro(F) = [FCDAO]
    # mro(G) = [G] + merge(mro(E)+mro(F)+[EF])
    # mro(G) = [G] + merge([EBCAO]+[FCDAO]+[EF])
    # mro(G) = [GE] + merge([BCAO]+[FCDAO]+[F])
    # mro(G) = [GEB] + merge([CAO]+[FCDAO]+[F])
    # mro(G) = [GEBF] + merge([CAO]+[CDAO])
    # mro(G) = [GEBFC] + merge([AO]+[DAO])
    # mro(G) = [GEBFCD] + merge([AO]+[AO])
    # mro(G) = [GEBFCDAO]
    
    # mro(A) = [AO]
    # mro(C) = [CAO]
    # mro(B) = [B] + merge(mro(A),mro(C),[AC])
    #        = [B] + merge([AO],[CAO],[AC])
    # class A():pass
    # class C(A):pass
    # class B(C):pass
    # class D(B,C):pass
    # print(D.__mro__)
    

      

  • 相关阅读:
    Oracle备份Scott
    Oracle_备份整库
    Oracle配置说明
    Linux-防火墙设置-centos6.10版
    Centos6.10-Nginx代理配置
    oen /var/run/nginx.pid failed
    Win10重置 系统诸多设置或者菜单点击无效或者异常信息回复办法
    EasyUI TreeGrid 悬浮效果
    Hive
    MapReduce高级_讲义
  • 原文地址:https://www.cnblogs.com/lnrick/p/9418816.html
Copyright © 2020-2023  润新知