千锋教育-做有情怀、有良心、有品质的职业教育机构

python新式类和旧式类区别

来源:千锋教育
发布时间:2023-11-10 17:15:50
分享

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

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

为了统一类(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类的子类(隐式)。

代码示例:

classoldClass:#经典类

def__init__(self):

pass

classnewClass(object):#新类

def__init__(self):

pass

c1=oldClass()

c2=newClass()

c1.__class__#输出->

type(c1)#输出->

c2.__class__#输出->

type(c2)#输出->

以上内容为大家介绍了python培训之新式类和旧式类区别,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • pythoncomplex函数有什么用? python的complex函数可以使用参数real+imag*j方式创建一个复数。也可以转换一个字符串的数字为复数;或者转换一个数字为复数。如果第一个参数是字符串,第二个参数不用填写,会解释这个字符
  • python有枚举类型吗? python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型方法1.使用自定义类classNumbers(object):ONE=1TWO=2THR
  • python怎么处理字符编码问题 python中可以使用base64来处理字符编码问题,Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含
  • python怎么安装Python的第三方模块? 怎么安装Python的第三方模块?具体有以下两种方法:第一种方法(不使用pip或者easy_install):Step1:在网上找到的需要的包,下载下来。eg.rsa-3.1.4.tar.gzStep
  • python关键字有多少个? Python中关键词有多少个?Python中关键词目前有31个,可以利用Python的内置的keyword模块进行输出查看。keyword模块Helponmodulekeyword:NAMEkeywo
  • python逗号有什么特殊用法? Python中的逗号有什么特殊用法?本文实例讲述Python中逗号的三种作用。1.逗号在参数传递中的使用:这种情况不多说没有什么不解的地方就是形参或者实参传递的时候参数之间的逗号例如defabc(a,