python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类。

为什么要在2.2中引进new style class呢?官方给的解释是:

为了统一类(class)和类型(type)。

在2.2之前,比如2.1版本中,类和类型是不同的,如a是ClassA的一个实例,那么a.__class__返回 ‘ class __main__.ClassA‘ ,type(a)返回总是。而引入新类后,比如ClassB是个新类,b是ClassB的实例,b.__class__和type(b)都是返回‘class '__main__.ClassB' ,这样就统一了。

引入新类后,还有其他的好处,比如更多的内置属性将会引入,描述符的引入,属性可以来计算等等。

为了向前兼容,默认情况下用户定义的类为经典类,新类需要继承自所有类的基类 object 或者继承自object的新类。

值得注意的地方是,虽然使用的是最新的python(2.7),但是一些特性不会在旧式类起作用。

所以,为了确保自己使用的是新式类,有两种以下方法:

1. 元类,在类模块代码的最前面加入如下代码 __metaclass__ = classname(自定义的某个新式类)。

2. 类都从内建类object直接或者间接地继承。

如果不需要兼容旧式类,旧版本的类,那么就保持都是新式类。

在Python3里面,不存在这些问题了,因为所有的类都是object类的子类(隐式)。

代码示例:class oldClass: #经典类

def __init__( self ):

pass

class newClass(object): #新类

def __init__( self ):

pass

c1 = oldClass()

c2 = newClass()

c1.__class__ #输出-> type(c1) # 输出-> c2.__class__ # 输出->type(c2) # 输出->本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

python3 新式类_python新式类和旧式类区别相关推荐

  1. python3新式类_python新式类和旧式类区别

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

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

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

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

    看写poc的时候看到的,思考了半天,现在解决了 转载自http://blog.csdn.net/zimou5581/article/details/53053775 Python中类分两种:旧式类和新 ...

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

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

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

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

  6. python语言用什么关键字来声明一个类_python使用什么关键字定义类

    什么是类? 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 什么是方法? 类中的函数即为方法 如何定义一个类? 定义类,语法格式如下:class ...

  7. python如何设计工具类_Python基础之自定义工具类

    class ListHelper: @staticmethod def find_all(target, func_condition): """ 查找列表中满足条件的所 ...

  8. python如何实例化类_Python如何根据类名实例化类

    个人认为比较好的一种方法: # 假设当前目录中有个名为losses.py的模块,我们要调用其中的名为HingeGanLoss的类 file_name = 'losses' class_name = ' ...

  9. python定义一个圆类_python设计一个Circle(圆)类,包括圆心位置`,半径,颜色等属性。编写构造方法和其他方法,计算周长和面积。...

    ** Python:设计一个Circle(圆)类,包括圆心位置`,半径,颜色等属性.编写构造方法和其他方法,计算周长和面积.请编写程序验证类的功能. class Circle: def -init-( ...

最新文章

  1. 如何用OpenCV制作一个低成本的立体相机
  2. linux 配置软连接的需要注意的一个问题
  3. 2017.5.23 -- 学习记录
  4. python的知识点总结云分享_Python工程师面试必备25条Python知识点
  5. 真正掌握vuex的使用方法(一)
  6. 中科大软件测试期末复习
  7. python输入三个商品_用python3采集shopify站点商品
  8. matlab求傅里叶级数展开式_傅里叶级数:从向量的角度看函数
  9. 从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.
  10. 【前端基础】Web与Native交互之The JSBridge FAQ
  11. 矩阵维度必须一致是什么意思_糖化肌肤是什么意思?抗糖养肤你必须知道这些...
  12. 最全的软件开发报价标准
  13. 一级计算机office选择题题库及答案,计算机一级msoffice选择题题库40套含答案
  14. greenplum 数据库单机部署
  15. MFC调试工具——之BoundsChecker用法
  16. 计算机专硕学硕哪个好考啊,【专硕考研】计算机考研选学硕还是专硕?
  17. Android Studio4.2.2出现fastutil下载失败导致无法同步的问题
  18. 天池比赛如何使用docker提交
  19. 如何修改sql服务器名,修改计算机名并更新sqlserver中存储的服务器名称
  20. MySQL连接查询综合应用

热门文章

  1. 2017第二届中国信息通信大数据大会将于6月在京召开
  2. CSDN博客如何在有序序列中缩进代码段或图片
  3. Linux系统挂起进程的几种方法
  4. 【大数据】学习大数据前需要掌握的知识
  5. excel 两列数据怎么把组合的可能全部做出来?
  6. SAN Inter-Fabric Routing and Vitrual Fabrics
  7. C++:类模板与模板类
  8. Nagios监控平台完全攻略 (二)
  9. Ralasafe的使用总结
  10. 一个被认可的数据治理框架,到底应该什么样?