1了解python2和python3类的区别
python2在2.4之前使用的是经典类, 2.4之后, 使用的是新式类 class Foo:
pass class Foo(object):
pass MRO: method resolution order 方法的查找顺序 class Base:
pass class Base1:
def chi():
pass class Bar(Base, Base1):
pass b = Bar() # Bar -> Base -> Base1
b.chi() 2. 经典类的MRO 树形结构的深度优先遍历 -> 树形结构遍历 3. 新式类的MRO C3算法(难点, 重点)
1. 拆分
2. 合并 用头和身体比较
class A:
pass
class B(A):
pass
class C(A):
pass
class D(B, C):
pass
class E(C, A):
pass
class F(D, E):
pass
class M:
pass
class N(M):
pass
class P(E, A):
pass
class X:
pass
class Q(P,N,X):
pass
class G(Q, F):
pass
class H(G, F):
pass # L(A) = A
# L(B) = B + L(A) + A
# L(C) = C + L(A) + A
# L(D) = D + L(B) + L(C) + BC
# L(E) = E + L(C) + L(A) + CA
# L(F) = F + L(D) + L(E) + DE
# L(M) = M
# L(N) = N + L(M) + M
# L(P) = P + L(E) + L(A) + EA
# L(X) = X
# L(Q) = Q + L(P) + L(N) + L(X) +PNX
# L(G) = G + L(Q) + L(F) + QF
# L(H) = H + L(G) + L(F) + GF
#
#
# L(A) = A
# L(B) = B + L(A) + A # BA
# L(C) = C + L(A) + A # CA
# L(D) = D + L(B) + L(C) + BC # DBCA
# L(E) = E + L(C) + L(A) + CA # ECA
# L(F) = F + L(D) + L(E) + DE # FDBECA
# L(M) = M
# L(N) = N + L(M) + M # NM
# L(P) = P + L(E) + L(A) + EA # PECA
# L(X) = X
# L(Q) = Q + L(P) + L(N) + L(X) +PNX # QPECANMX
# L(G) = G + L(Q) + L(F) + QF # GQPFDBECANMX
# L(H) = H + L(G) + L(F) + GF # HGQPFDBECANMX

  

MRO,C3算法的更多相关文章

  1. python学习笔记:第20天 多继承、MRO C3算法

    目录 一.多继承 二.旧式类的MRO 三.新式类的MRO 四.super 一.多继承 之前已经学习过了继承,当出现了x是⼀种y的的时候,就可以使⽤继承关系,即"is-a" 关系.在 ...

  2. MRO C3算法 super的运用

    -------------态度决定成败,无论情况好坏,都要抱着积极的态度,莫让沮丧取代热心.生命可以价值极高,也可以一无是处,随你怎么去选择.# --------------------------- ...

  3. python 面向对象(六)MRO C3算法 super

    ########################总结################ 面向对象回顾 类:对某一个事物的描述,对一些属性和方法的归类 class 类名: var=123#类变量 def ...

  4. python --- 21 MRO C3算法

    一.python2.2之前用的是   经典类的MRO继承 ①深度递归继承     从左到右 ,一条路走到黑 ②广度继承           一层一层的继承 深度继承时   为   R 1 2 3 4 ...

  5. 21 MRO C3算法

    三十九 MRO 多继承的继承顺序 一.python2.2之前用的是   经典类的MRO继承 ①深度递归继承     从左到右 ,一条路走到黑 ②广度继承           一层一层的继承 深度继承时 ...

  6. day19 MRO C3算法 super()

    1. MRO(Method Resolution Order):方法解析顺序,主要用于在多继承时判断调的属性的路径(来自于哪个类). 1.Python语言包含了很多优秀的特性,其中多重继承就是其中之一 ...

  7. python MRO:C3算法

    http://www.codeweblog.com/python-mro-c3%E7%AE%97%E6%B3%95/ 在 python 2.2 之后,python 实现了一个新的MRO算法:C3算法, ...

  8. Python之MRO及其C3算法

    [<class '__main__.B'>, <class '__main__.A'>, <class 'object'>] (<class '__main_ ...

  9. python之MRO和C3算法

    python2类和python3类的区别pyhon2中才分新式类与经典类,python3中统一都是新式类Python 2.x中默认都是经典类,只有显式继承了object才是新式类python 3.x中 ...

随机推荐

  1. jq demo 九宫格抽奖

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  2. CentOS7 linux下yum安装mysql5.7

    文章参考(https://www.cnblogs.com/jorzy/p/8455519.html) 1.创建存放安装包的位置,并且进入该目录 命令mkdir /share 命令cd /share 2 ...

  3. 吴恩达机器学习-octave笔记

    隐藏前缀提示符:PS1('>>') 不显示打印内容:;结尾 字符串:a=’hi’ 屏幕输出:disp(sprint(‘2 decimals:%0.2f’,a)) 生成集合(矩阵):V=1: ...

  4. C# 时间控件 竖直进度条 饼图显示 仪表盘 按钮基础控件库

    Prepare 本文将使用一个NuGet公开的组件来实现一些特殊的控件显示,方便大家进行快速的开发系统. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台 ...

  5. Js 编程题汇总

    Coding题: 1. 预测以下代码的输出结果: var Foo = function(a) { function bar() { console.log(a); }; this.baz = func ...

  6. 《ProgrammingHive》阅读笔记-第二章

    书本第二章的一些知识点,在cloudera-quickstart-vm-5.8.0-0上进行操作. 配置文件 配置在/etc/hive/conf/hive-site.xml文件里面,采用mysql作为 ...

  7. 两个1/x类的广义函数

    [转载请注明出处]http://www.cnblogs.com/mashiqi 2017/04/15 1.$\text{p.v.}\,\frac{1}{x}$ 因为$(x \ln x - x)' = ...

  8. 位运算 - a^b

    求 a 的 b 次方对 p 取模的值. 输入格式 三个整数 a,b,p ,在同一行用空格隔开. 输出格式 输出一个整数,表示a^b mod p的值. 数据范围 1≤a,b,p≤109 输入样例: 3 ...

  9. NOIP2012 Day1 T2国王游戏 洛谷P1080

    第一篇博客啊…… 由于我太弱了,还要去补不全的知识点准备参加人生第一次NOIp,所以第一篇博客就简短一点好了(偷懒就直说吧……) 洛谷P1080传送门 题意概括: 有N对数ai和bi,以及两个数a0和 ...

  10. js生成的验证码

    例1 <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title&g ...