zoukankan      html  css  js  c++  java
  • mro之C3算法

    # C3算法 归并算法

    class A(object): pass
    class B(A): pass
    class C(A): pass
    class D(B): pass
    class E(C): pass
    class F(D, E): pass
    print(F.__mro__)
    #########################
    # 第一步先找到继承的父类的MRO
    # D = [D, B, A, O]
    # E = [E, C, A, O]
    # 第二步 把父类这两个MRO 和 DE 进行归并
    # 取每个表表头 并且其他表内容部分不能含有我们要取的那个表头
    # 如果不满走就去取第二个表头
    # merge([DBAO], [ECAO], [DE])
    # D在表头(第一位,而其他的内容部分都没有D,[BAO],[CAO],故满足要求)
    # FD merge([BAO], [ECAO], [E])
    # B在表头(第一位,而其他的内容部分都没有B,[AO],[CAO],故满足要求)
    # FDB merge([AO], [ECAO], [E])
    # A在表头(第一位,而其他的内容部分有A,[AO],[CAO],故不满足要求,看第二个列表[ECAO])
    # E在表头(第一位,而其他的内容部分都没有E,[AO],[CAO],故满足要求
    # FDBE merge([AO], [CAO])
    # C在表头(第一位,而其他的内容部分都没有C,[AO],[AO],故满足要求,AO以此类推
    # FDBEC merge([AO], [AO])
    # FDBECAO
  • 相关阅读:
    [武汉集训] Cliquers
    [NOI2017] 泳池
    [NOWCODER7] 小睿睿的方案
    动态dp初探
    [WC2008] 游览计划
    插头dp初探
    最小斯坦纳树初探
    2020ccpc总结
    Finding Palindromes
    最长非严格上升子序列的思考 && CF 1437E Make It Increasing
  • 原文地址:https://www.cnblogs.com/nzd123456/p/9820894.html
Copyright © 2011-2022 走看看