江苏省建设工程网站,沈阳工程建设信息网站电气监理,点餐网站怎么做,东莞网站建设报价方案python的新式类是2.2版本引进来的#xff0c;我们可以将之前的类叫做经典类或者旧式类。为什么要在2.2中引进new style class呢#xff1f;官方给的解释是#xff1a;为了统一类(class)和类型(type)。在2.2之前#xff0c;比如2.1版本中#xff0c;类和类型是不同的#…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 ):passclass newClass(object): #新类def __init__( self ):passc1 oldClass()c2 newClass()c1.__class__ #输出- type(c1) # 输出- c2.__class__ # 输出-type(c2) # 输出-本条技术文章来源于互联网如果无意侵犯您的权益请点击此处反馈版权投诉