博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多继承之MRO
阅读量:6569 次
发布时间:2019-06-24

本文共 626 字,大约阅读时间需要 2 分钟。

一,python2和python3的区别

  在python2中存在两种类:一个叫经典类,在python2.2之前,一直用的是经典类,经典类如果在基类的根什么都不写,那么它就是根;还有一个叫新式类,在python2.2之后出现的,新式类的特点就是所有基类的根都是object。

  在python3中只存在新式类,所以所有类的根都是object。

二,经典类的MRO

  在经典类中的MRO是采用深度优先遍历方法,我们需要通过画图的方式解决比较复杂的题,然后再通过从左往右,一条路走到底的方式找出MRO。

我们创建一个FOO类的对象,它的MRO就是FOO,H,G,F,D,B,A,C,E

二,新式类的MRO,即C3算法

右边即推算过程,有L(H)=H+L(G)+L(X)+L(F)+GXF的方式一直往上走,到最后推到L(A)=A为止,然后把结果反带回去,即L(B)=BA,直到推到L(H)=HGPMXFDBECANO,在整个过程中,只用前面头和后面的身体比较,身体中没有就出来,有就跳过。也可以用类名.__mro__来获得类的MRO信息。

四,super()

   super()可以帮我们执行MRO中下一个父类的方法,通常super()使用的两个地方:

  1,可以访问父类的构造函数

  2,可以调用父类(MRO)中方法

  

面试题

 

转载于:https://www.cnblogs.com/12345huangchun/p/9960025.html

你可能感兴趣的文章
mysql优化
查看>>
【批处理】for循环中产生不同的随机数
查看>>
Gradle -help
查看>>
/etc/security/limits.conf
查看>>
js 框架
查看>>
android 实现ListView中添加RaidoButton单选
查看>>
Oracle数据库:启动操作
查看>>
linux下的防火墙
查看>>
SNAT与DNAT
查看>>
Linux 修改密码“ Authentication token manipulation err”
查看>>
openstack
查看>>
Lync Server 2013 安装体验(一)
查看>>
EBB-24、DNS2
查看>>
css3做的nav
查看>>
汇编笔记
查看>>
点击qq、点击邮箱01
查看>>
时间处理总结(三)javascript与WCF
查看>>
Ubantu下安装jdk 教程
查看>>
ActiveMQ入门实例
查看>>
linux安装至少有哪两个分区,各自作用是什么?
查看>>