zoukankan      html  css  js  c++  java
  • Python C3 算法 手动计算顺序

    手动计算类继承C3算法原则:

    1. 以所求类的直接子类的数目分成相应部分
    2. 按照从左往右的顺序依次写出继承关系
    3. 继承关系第一个第一位,在所有后面关系都是第一个出现的,提取出来,其他都替换掉
    4. 如果步骤3中不成立,就到后面一部分去找
    5. 然后继续在后面这部分找,知道找不到,再回到第一部分去找
    6. 直到结束。

    下面上例题,看下如何应用

    1.从左到右依次写出类继承关系,并分好部分
    左边|右边
    HGECA,HGEA,HGMX,HGMY|HFDBA,HFDCA,HFECA,HFEA
    2.合并过程
    H                GECA,GEA,GMX,GMY|FDBA,FDCA,FECA,FEA
    第一部分第一个第一位G,在所有部分均是第一个出现,或者未出现,可以提取
    HG                ECA,EA,MX,MY|FDBA,FDCA,FECA,FEA
    第一部分第一个第一位E,在第一部分均出现在首位,但是在第二部分出现在非首位,所以到到地位部分去找
    第二部分第一个第一位F,在所有部分均是第一个出现,或者未出现,可以提取
    HGF                ECA,EA,MX,MY|DBA,DCA,ECA,EA
    现在还在第二部分,第二部分第一个第一位D,在所有部分均是第一个出现,或者未出现,可以提取
    HGFD            ECA,EA,MX,MY|BA,CA,ECA,EA
    第二部分第一个第一位B,在所有部分均是第一个出现,或者未出现,可以提取
    HGFDB            ECA,EA,MX,MY|A,CA,ECA,EA
    第二部分第一个第一位A,在第二部分出现在非首位,去第一部分去找
    第一部分第一个第一位E,所有部分均是第一个出现,或者未出现,可以提取
    HGFDB            ECA,EA,MX,MY|A,CA,ECA,EA
    HGFDBE            CA,A,MX,MY|A,CA,CA,A
    第一部分第一个第一位C,所有部分均是第一个出现,或者未出现,可以提取
    HGFDBEC            A,A,MX,MY|A,A,A,A
    第一部分第一个第一位A,所有部分均是第一个出现,或者未出现,可以提取
    HGFDBECA        MX,MY|
    HGFDBECAM        X,Y|
    HGFDBECAMXY

    D C1 B1 A1,D C1 B1 A2|D C2 B1 A1,D C2 B1 A2,D C2 B2 A2|D C3 B2 A2,D C3 B3 A2,D C3 B3 A3
    D            C1 B1 A1,C1 B1 A2|C2 B1 A1,C2 B1 A2,C2 B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
    D C1        B1 A1,B1 A2|C2 B1 A1,C2 B1 A2,C2 B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
    D C1 C2        B1 A1,B1 A2|B1 A1,B1 A2,B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
    D C1 C2 B1        A1,A2|A1, A2,B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
    D C1 C2 B1 A1        A2|A2,B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
    D C1 C2 B1 A1 C3        A2|A2,B2 A2|B2 A2,B3 A2,B3 A3
    D C1 C2 B1 A1 C3 B2        A2|A2,A2|A2,B3 A2,B3 A3
    D C1 C2 B1 A1 C3 B2 B3        A2|A2,A2|A2,A2,A3
    D C1 C2 B1 A1 C3 B2 B3 A2        A3
    D C1 C2 B1 A1 C3 B2 B3 A2 A3
  • 相关阅读:
    七、AOP统一处理以及日志打印
    六、spring Boot项目表单验证(最小值为例)以及spring的常用注解
    五、spring-data-Jpa 数据库操作
    四、spring Boot项目中Controller的使用
    三、SpringBoot的常用配置(.yml通过配置文件和注解进行属性注入,以及分别配置生产、开发环境)
    机器学习中的 上采样 下采样 过采样 欠采样
    Mac 安装/卸载 brew
    Keras 训练自己的人脸特征点提取模型的坑
    Keras 使用自己编写的数据生成器
    iPhone 设备管理在哪(已解决)
  • 原文地址:https://www.cnblogs.com/jiangchunsheng/p/10973429.html
Copyright © 2011-2022 走看看