c3 算法
求某一类在多继承中的继承顺序:
类的mro == [类] + [父类的继承顺序] + [父类2的继承顺序]
如果从左到右的第一个类在后面的顺序中出现,那么就提取出来到mro顺序中
[ABCD] + [EO] --> A = [BCD] + [EO]
如果从左到右的第一个类在后面的顺序中出现,且在后面的顺序中也是第一位,那么就提出来到mro顺序中
[ABCD] + [AEO] --> A = [BCD] + [EO]
如果从左到右的第一个类在后面的顺序中出现,但不是在第一位,那么应该继续往后找,找到符合规则的项目
[ABCD] + [EAO] --> E = [ABCD] + [AO]
[ABCD] + [EAO] + [GEO] --> G = [ABCD] + [EAO] + [EO]
[ABCD] + [EAO] + [EO] --> GE = [ABCD] + [AO] + [O]
关键结论:
这个类没有发生继承,他的顺序永远是[类o]
只要是单继承,不是多继承,那么mro顺序就是从子类到父类的顺序
例子:

L(G) = [G] + [O]
G = [O]
= GO
L[E] = EO
L[F] = [F] + [GO]
F = [GO]
= FGO
L[B] = [B] + [FGO]
B = [FGO]
BF = [GO]
BFG= [O]
= BFGO
L[C] = [C] + [EO]
C = [EO]
CE = [O]
= CEO
L[D] = [D] + [GO]
D = [GO]
DG = [O]
= DGO
L[A] = [A] + [BFGO] + [CEO] + [DGO]
A = [BFGO] + [CEO] + [DGO]
AB = [FGO] + [CEO] + [DGO]
ABF= [GO] + [CEO] + [DGO]
ABFC= [GO] + [EO] + [DGO]
ABFCE= [GO] + [O] + [DGO]
ABFCED = [GO] + [O] + [GO]
ABFCEDG= [O] + [O] + [O]
= ABFCEDGO 提示:只要是单继承,不是多继承,那么mro顺序就是从子类到父类的顺序
例子2:

L[G] = GO
L[D] = DO
L[E] = EGO
L[F] = FO
L[B] = [B] + [DO] + [EGO]
B = [DO] + [EGO]
BD = [O] + [EGO]
BDE = [O] + [GO]
BDEG = [O] + [O]
= BDEGO
L[C] = [C] + [DO] + [FO]
C = [DO] + [FO]
CD = [O] + [FO]
CDF= [O] + [O]
= CDFO
L[A] = [A] + [BDEGO] + [CDFO]
A = [BDEGO] + [CDFO]
AB = [DEGO] + [CDFO]
ABC = [DEGO] + [DFO]
ABCD = [EGO] + [FO]
ABCDE= [GO] + [FO]
ABCDEG= [O] + [FO]
ABCDEGF= [O] + [O]
L[A] = ABCDEGFO

c3算法详解的更多相关文章

  1. BM算法  Boyer-Moore高质量实现代码详解与算法详解

    Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...

  2. kmp算法详解

    转自:http://blog.csdn.net/ddupd/article/details/19899263 KMP算法详解 KMP算法简介: KMP算法是一种高效的字符串匹配算法,关于字符串匹配最简 ...

  3. 机器学习经典算法详解及Python实现--基于SMO的SVM分类器

    原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector  ...

  4. [转] KMP算法详解

    转载自:http://www.matrix67.com/blog/archives/115 KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段.    我们这里说的K ...

  5. 【转】AC算法详解

    原文转自:http://blog.csdn.net/joylnwang/article/details/6793192 AC算法是Alfred V.Aho(<编译原理>(龙书)的作者),和 ...

  6. KMP算法详解(转自中学生OI写的。。ORZ!)

    KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段. 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法.KMP算法是拿来处理字符串匹配的.换句 ...

  7. EM算法详解

    EM算法详解 1 极大似然估计 假设有如图1的X所示的抽取的n个学生某门课程的成绩,又知学生的成绩符合高斯分布f(x|μ,σ2),求学生的成绩最符合哪种高斯分布,即μ和σ2最优值是什么? 图1 学生成 ...

  8. Tarjan算法详解

    Tarjan算法详解 今天偶然发现了这个算法,看了好久,终于明白了一些表层的知识....在这里和大家分享一下... Tarjan算法是一个求解极大强联通子图的算法,相信这些东西大家都在网络上百度过了, ...

  9. 安全体系(二)——RSA算法详解

    本文主要讲述RSA算法使用的基本数学知识.秘钥的计算过程以及加密和解密的过程. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(一)—— DES算法详解 1.概述 ...

随机推荐

  1. MATLAB卷积运算(conv、conv2、convn)解释

    1 conv(向量卷积运算) 所谓两个向量卷积,说白了就是多项式乘法.比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积如下:把p的元素作为一个多项式的系数,多项式按升幂(或降幂)排列, ...

  2. Linux kernel Programming - Concurrency and Race Conditions

    Concurrency and Its Management Race condition can often lead to system crashes, memory leak,corrupte ...

  3. OCP 12c题库出现大量新题,062新题-第21题

    choose three Which three statements are true about Oracle checkpoint processing? A) Incremental chec ...

  4. MySQL 基础三 函数(聚合、字符串、时间、条件判断)

    1.聚合 其它:GROUP_CONCAT.avg.sum.count.max.min SELECT typeid,GROUP_CONCAT(goodsname) FROM `goods` GROUP ...

  5. 11-51单片机ESP8266学习-AT指令(ESP8266作为TCP客户端,连接TCP服务器,用串口调试助手和手机TCP调试助手测试)

    写完题目刚想起来一件事情,如果手机作为客户端(不连接路由器的情况下),手机连接模块的无线会分配一个IP地址,,,这个IP地址事先我也不知道....我先看看AT指令里面有没有一个指令可以打印一下连接自己 ...

  6. 第一章:模型层model layer -- Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. 题外话: Django的教程写到这里,就进入 ...

  7. 关于树莓派HDMI转VGA线接显示器黑屏

    经过数种折腾,找到了解决方法,在SD卡内有个config.txt文件,在其中找到“#hdmi_safe=1”,把#消除掉,变更后成为 # uncomment if you get no picture ...

  8. Docker inspect - format格式化输出 - 运维笔记

    Docker --format 参数提供了基于 Go模板 的日志格式化输出辅助功能,并提供了一些内置的增强函数. 什么是模板?上图是大家熟悉的 MVC 框架(Model View Controller ...

  9. Redis日常操作命令小结

    Redis缓存服务是运维工作中比较常见的一种维护工作,下面就redis日常操作命令在此做一简单小结,以备查用: 1)连接redis服务命令# redis-cli -h redis主机ip或主机域名 - ...

  10. Visual Studio平台安装及测试

    一.VS安装 图1.1 图1.2 二.单元测试练习 题目:课本22~25页单元测试练习 1.创建一个c#类(具体如下:打开VS2010,然后点击VS界面上左上角的文件按钮,然后点击文件—新建—项目,就 ...