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. web在线智能四则运算挑战赛

    本网站主要针对小学生,是一个智能在线学习和测试平台,平台有精美炫酷的网页,和可靠的数据,主要特色,自动出题.验证码机制.非空检测.正则匹配不同年级同学而出不同难度的题目,在线结算.时间控制,时间一到自 ...

  2. Mac配置系统环境变量

    最近在配置flutter的环境变量,使用: export PATH=$PATH:`pwd`/flutter/bin 然后一段时间之后发现环境变量莫名其妙的就消失了,这里有一个大坑! !!!!Mac 系 ...

  3. 使用python绘制根轨迹图

    最近在学自动控制原理,发现根轨迹这一张全是绘图的,然而书上教的全是使用matlab进行计算机辅助绘图.但国内对于使用python进行这种绘图的资料基本没有,后来发现python-control包已经将 ...

  4. Python文件读写(open(),close(),with open() as f...)

    Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题 ...

  5. JS中的一等公民:函数

    在JavaScript中,函数可以 作为值赋给一个变量 作为参数传递给另一个函数 作为另一个函数的返回值 所以我们说JavaScript的函数是“一等公民”. 赋值: var foo = functi ...

  6. 使用Java API方式的MapReduce练习

    众所周知,hadoop生态圈的多数组件都是使用java开发的. 那么使用Java API方式实现起来,显得要比其它语言效率更高,更原生态. 前面有一个Hadoop学习笔记02_MapReduce练习 ...

  7. iOS开发 SVN回退到某一个版本

    1.选择你要恢复的工程,(注意:从SVN上checkout下来的工程不要改变,移动位置) 2.找到SVN的导航栏,点击“Working Copy”--->"Revert" 3 ...

  8. awrrpt.sqll生成awr报ORA-06502,ORA-06512

    客户环境SumOS操作系统,数据库版本11.2.0.3,rac两节点: 在节点2,执行awr报告,输出报错,有时候可以成功,有时候失败. 报错现象 SQL>@?/rdbms/admin/awrr ...

  9. Python全栈之路----进制运算

    1.进制拾遗 二进制:01 八进制:01234567 十进制:0123456789 十六进制:0123456789ABCDEF  (a是10,b是11,c是12,d是13,e是14,f是15) 2.进 ...

  10. Jekins学习

    1.Windows  安装入门   https://blog.csdn.net/u011541946/article/details/78003772 PS:坑1,https问题 坑2,offline ...