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)                # 输出->

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

  1. python可以实现什么黑科技_Python黑科技之元类

    Python中的类 在理解元类之前,你需要了解Python中的类.Python中的类借鉴自Smalltalk. 在大多数编程语言中,类只是描述对象生成方式的一段代码,在Python里面看起来也是这样. ...

  2. python面向对象编程中方法和属性_Python面向对象编程中关于类和方法的学习笔记...

    Python面向对象编程中关于类和方法的学习笔记 类与类方法是面向对象的编程语言中必不可少的特性,本文总结了Python面向对象编程中关于类和方法的学习笔记,需要的朋友可以参考下 类和实例 pytho ...

  3. python写的软件怎么逆向_python逆向工程:通过代码生成类图

    python逆向工程:通过代码生成类图 大致过程 现在有一个core包,里面有python的代码. 通过core包,生成python的类图,如下: 实施步骤: 1.首先安装graphviz,一个画图工 ...

  4. python装饰器模式带参数_python函数装饰器、类装饰器和带参数的装饰器——装饰器模式...

    装饰器模式: 动态地给对象添加一些额外的职责,就增加功能来说,装饰模式比生产子类更加灵活 Component 是定义一个对象接口,可以给这些对象动态地添加职责.concreteComponent是定义 ...

  5. 在python语言中定义类的关键字是_Python 使用 _________________ 关键字来定义类。_学小易找答案...

    [判断题]我国公民的作品著作权的保护期为50年. [单选题]The broad principle that requires expenses to be reported in the same ...

  6. python 装饰器实现事件绑定_Python装饰器实现几类验证功能做法实例

    最近新需求来了,要给系统增加几个资源权限.尽量减少代码的改动和程序的复杂程度.所以还是使用装饰器比较科学 之前用了一些登录验证的现成装饰器模块.然后仿写一些用户管理部分的权限装饰器. 比如下面这种 调 ...

  7. python分类下取得所有子类_Python中所有的异常类都是( ) 的子类。_学小易找答案...

    [单选题]在完整的异常语句中,语句出现的顺序正确的是( ). [单选题]下列语句打开文件的位置应该在( ). f = open('itheima.txt', 'w') [单选题]打开一个可读写的文件, ...

  8. python中的列表和元组_python中列表和元组的区别

    如果有了解过python中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改.除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是 ...

  9. python中datetime是什么意思_Python中time和datetime的区别

    Python中表示时间的两种方式:时间戳:相对于1970.1.1 00:00:00以秒计算的偏移量,唯一的 时间元组struct_time:共有9个元素tm_year:年1-12 tm_mon:月1- ...

  10. python中datetime是什么意思_Python中time和datetime的区别与联系

    Python 中提供了对时间日期的多种多样的处理方式,主要是在 time 和 datetime 这两个模块里.今天稍微梳理一下这两个模块在使用上的一些区别和联系. Python表示时间的两种方式: 1 ...

最新文章

  1. 一段话系列-QPS、TPS、PV是很么如何计算
  2. Java泛型通用常量类案例
  3. 基本概念—监督与非监督
  4. Log4j执行漏洞修复教程
  5. Android 实现ListView的A-Z字母排序
  6. 字节跳动 设计模式 pdf_凭这份pdf我拿下了美团、字节跳动、阿里、小米等大厂的offer...
  7. java ajax多文件上传插件_ajaxFileUpload.js插件支持多文件上传的方法
  8. 盘一盘2020年上半年的微博热搜词条(文末提供获取热搜词条方法)
  9. BZOJ 4085:[Sdoi2015]bigyration(SDOI 2015 round 2 Day 1)
  10. 网络编程(网络通信协议、TCP和UDP协议、TCP和UDP通信)
  11. Akka Actors入门案例解析
  12. ECMAScript 简介
  13. MATLAB小白之图片合成
  14. 关于打印机打印网页出现字迹显示不全的问题心得
  15. 解决荣耀系列手机打开usb调试无法连接adb的问题
  16. 人际关系-《你为什么不道歉》书中的精髓:道歉对于人际关系的重要性,以及怎样传达有诚意、有深度的道歉。
  17. web标准是html5,什么是HTML5-WEB标准专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....
  18. window7取消文件默认打开方式的方法
  19. Python爬取了猫眼47858万条评论,告诉你《飞驰人生》值不值得看?!
  20. android新闻app

热门文章

  1. 使用cmd-命令运行Java项目
  2. 软件工程采取了哪些措施以保证最终能够交付给用户一个高质量、低成本的软件产品?
  3. if ,else if ,else 执行过程
  4. leetcode 476. 数字的补数(Number Complement)
  5. CentOS 7 最小化安装简单配置
  6. NumPy数值计算库-1
  7. 【Python】windows电脑 python3.6安装lxml库
  8. 《android开发艺术探索》读书笔记(五)--RemoteViews
  9. VB.Command()的参数
  10. Web应用开发平台 OpenJWeb