看写poc的时候看到的,思考了半天,现在解决了

转载自http://blog.csdn.net/zimou5581/article/details/53053775

Python中类分两种:旧式类和新式类:

➤新式类都从object继承,经典类不需要。

➤新式类的MRO(method resolution order 基类搜索顺序)算法采用C3算法广度优先搜索,而旧式类的MRO算法是采用深度优先搜索

➤新式类相同父类只执行一次构造函数,经典类重复执行多次。

其中:

➤截止到python2.1,只存在旧式类。旧式类中,类名和type是无关的:如果x是一个旧式类,那么x.__class__定义了x的类名,但是type(x)总是返回。这反映了所有的旧式类的实例是通过一个单一的叫做instance的内建类型来实现的,这是它和类不同的地方。

➤新式类是在python2.2为了统一类和实例引入的。一个新式类只能由用户自定义。如果x是一个新式类的实例,那么type(x)和x.__class__是一样的结果(尽管这不能得到保证,因为新式类的实例的__class__方法是允许被用户覆盖的)。

➤Python 2.x中默认都是经典类,只有显式继承了object才是新式类

➤Python 3.x中默认都是新式类,经典类被移除,不必显式的继承object

Python2.x中:

[python] view plain copy

class A:

pass

class B:

pass

class C(B):

pass

class D(C,A):

pass

执行顺序为:D->C->B,->A

[python] view plain copy

class A(object):

pass

class B(object):

pass

class C(object):

pass

class D(A,B,C):

pass

执行顺序为: D->A->B->C->Object

python经典类新式类_Python新式类与经典类(旧式类)的区别相关推荐

  1. python新式类c3算法_Python 新式类继承关系的 C3 算法(Python 2.3 的方法解析顺序,MRO)...

    Python 新式类继承关系的 C3 算法(Python 2.3 的方法解析顺序,MRO) 翻译:刘硕 摘要:本文档面向于想要了解Python 2.3版本中 C3 方法解析顺序的 Python程序开发 ...

  2. python编程从入门到实战类的定义_Python编程:从入门到实践—类

    创建类 #!/usr/bin/env python # --*-- encoding:utf-8 --*-- class Dog(): """一次模拟小狗的简单尝试&qu ...

  3. python巩固函数和模块_Python学习教程6:函数,模块和类的使用

    Python函数 定义 函数是组织好的,可重复利用的,用来实现单一,或相关联功能的代码片段. 函数能提高应用的模块行,使代码逻辑更加的条理清晰. 内建函数 内建函数是Python中自带的,可供用户重复 ...

  4. python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文字数约1300,阅读时间约为3分钟. Python面向对象编程 类的继承机制 如果一个类A继承自另一个类B,就把继承者类A称 ...

  5. python新式类c3算法_Python新式类的方法解析顺序MRO与Super

    新式类与经典类的方法解析顺序 MOR(方法解析顺序) 经典类:深度优先 DFS python3以前 新式类:广度优先 python2.2 新式类:广度优先的C3算法实现(拓扑排序) BFS pytho ...

  6. python全排序算法题_Python的100道经典算法题(1)

    按照c语言的100道经典算法题,自己原创写的,就得是自己的练习题了 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数 ...

  7. python 新式类 旧式类_Python新式类与经典类(旧式类)的区别

    Python中类分两种:旧式类和新式类: ➤新式类都从object继承,经典类不需要. ➤新式类的MRO(method resolution order 基类搜索顺序)算法采用C3算法广度优先搜索,而 ...

  8. python新式类好还是经典类_python新式类和经典类的区别?

    python新式类和经典类的区别? 1)首先,写法不一样: class A: pass class B(object): pass 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. ...

  9. python 新式类和旧式类_python新式类和旧式类区别

    python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类. 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type) ...

最新文章

  1. python response.json()报错_Django JsonResponse json格式报错 解决Django响应JsonResponse返回json格式数据报错问题...
  2. GMM-HMM语音识别模型 原理篇
  3. 知道python不_为什么自学Python看不进去?
  4. 字符串左旋问题及判断一个字符串是否由另一个字符串左旋得到
  5. /usr/bin/ld: cannot find -l*** 这里***可以指lapack等
  6. 安装与设置Visual SVN
  7. 磁盘移臂调度实验_10 Swarm 的安装和基本的服务编排调度
  8. 日期格式化插件 --- moment
  9. 程序员很平凡,但从事着不平凡的工作!
  10. 2011蓝桥杯--神秘的三位数
  11. 用java和tomcat安装jenkins过程
  12. python语言的赋值语句可以改变变量的类型吗_python 数据类型和变量
  13. 动态桌面壁纸软件:iWall for Mac
  14. Office 2016 每次打开都有配置进度 解决办法
  15. Office卸载不干净,注册表项权限修改后仍然无法删除的问题
  16. php codeigniter insert,codeigniter批量插入数据(示例)
  17. What Is Harmony OS? Huawei’s New Operating System Explained
  18. 复现I3D遇到的问题
  19. java毕业设计奖助学金评审mybatis+源码+调试部署+系统+数据库+lw
  20. 进程间通讯 --- 管道(半双工通信)

热门文章

  1. Hadoop2异常分析(二):Sqoop导出数据错误
  2. python相对路径找不到文件_Python相对路径从子文件夹导入
  3. Java如何查看死锁?
  4. Hadoop 底层原理介绍
  5. 13行代码AC_Justifying the Conjecture Gym - 102394J(解题报告)
  6. 12行代码AC——例题6-6 小球下落(Droppint Balls, UVa 679)——解题报告
  7. python中元组可以比较大小吗_python元组比较
  8. python和halcon_VisionPro和Halcon的详细对比
  9. java list 转 map_Java8 快速实现List转map 、分组、过滤等操作
  10. 浏览器打开位置服务器,如何启动http服务器,然后打开web浏览器?