python 新式类和旧式类_python新式类和旧式类区别
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新式类和旧式类区别相关推荐
- python可以实现什么黑科技_Python黑科技之元类
Python中的类 在理解元类之前,你需要了解Python中的类.Python中的类借鉴自Smalltalk. 在大多数编程语言中,类只是描述对象生成方式的一段代码,在Python里面看起来也是这样. ...
- python面向对象编程中方法和属性_Python面向对象编程中关于类和方法的学习笔记...
Python面向对象编程中关于类和方法的学习笔记 类与类方法是面向对象的编程语言中必不可少的特性,本文总结了Python面向对象编程中关于类和方法的学习笔记,需要的朋友可以参考下 类和实例 pytho ...
- python写的软件怎么逆向_python逆向工程:通过代码生成类图
python逆向工程:通过代码生成类图 大致过程 现在有一个core包,里面有python的代码. 通过core包,生成python的类图,如下: 实施步骤: 1.首先安装graphviz,一个画图工 ...
- python装饰器模式带参数_python函数装饰器、类装饰器和带参数的装饰器——装饰器模式...
装饰器模式: 动态地给对象添加一些额外的职责,就增加功能来说,装饰模式比生产子类更加灵活 Component 是定义一个对象接口,可以给这些对象动态地添加职责.concreteComponent是定义 ...
- 在python语言中定义类的关键字是_Python 使用 _________________ 关键字来定义类。_学小易找答案...
[判断题]我国公民的作品著作权的保护期为50年. [单选题]The broad principle that requires expenses to be reported in the same ...
- python 装饰器实现事件绑定_Python装饰器实现几类验证功能做法实例
最近新需求来了,要给系统增加几个资源权限.尽量减少代码的改动和程序的复杂程度.所以还是使用装饰器比较科学 之前用了一些登录验证的现成装饰器模块.然后仿写一些用户管理部分的权限装饰器. 比如下面这种 调 ...
- python分类下取得所有子类_Python中所有的异常类都是( ) 的子类。_学小易找答案...
[单选题]在完整的异常语句中,语句出现的顺序正确的是( ). [单选题]下列语句打开文件的位置应该在( ). f = open('itheima.txt', 'w') [单选题]打开一个可读写的文件, ...
- python中的列表和元组_python中列表和元组的区别
如果有了解过python中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改.除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是 ...
- python中datetime是什么意思_Python中time和datetime的区别
Python中表示时间的两种方式:时间戳:相对于1970.1.1 00:00:00以秒计算的偏移量,唯一的 时间元组struct_time:共有9个元素tm_year:年1-12 tm_mon:月1- ...
- python中datetime是什么意思_Python中time和datetime的区别与联系
Python 中提供了对时间日期的多种多样的处理方式,主要是在 time 和 datetime 这两个模块里.今天稍微梳理一下这两个模块在使用上的一些区别和联系. Python表示时间的两种方式: 1 ...
最新文章
- 一段话系列-QPS、TPS、PV是很么如何计算
- Java泛型通用常量类案例
- 基本概念—监督与非监督
- Log4j执行漏洞修复教程
- Android 实现ListView的A-Z字母排序
- 字节跳动 设计模式 pdf_凭这份pdf我拿下了美团、字节跳动、阿里、小米等大厂的offer...
- java ajax多文件上传插件_ajaxFileUpload.js插件支持多文件上传的方法
- 盘一盘2020年上半年的微博热搜词条(文末提供获取热搜词条方法)
- BZOJ 4085:[Sdoi2015]bigyration(SDOI 2015 round 2 Day 1)
- 网络编程(网络通信协议、TCP和UDP协议、TCP和UDP通信)
- Akka Actors入门案例解析
- ECMAScript 简介
- MATLAB小白之图片合成
- 关于打印机打印网页出现字迹显示不全的问题心得
- 解决荣耀系列手机打开usb调试无法连接adb的问题
- 人际关系-《你为什么不道歉》书中的精髓:道歉对于人际关系的重要性,以及怎样传达有诚意、有深度的道歉。
- web标准是html5,什么是HTML5-WEB标准专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....
- window7取消文件默认打开方式的方法
- Python爬取了猫眼47858万条评论,告诉你《飞驰人生》值不值得看?!
- android新闻app
热门文章
- 使用cmd-命令运行Java项目
- 软件工程采取了哪些措施以保证最终能够交付给用户一个高质量、低成本的软件产品?
- if ,else if ,else 执行过程
- leetcode 476. 数字的补数(Number Complement)
- CentOS 7 最小化安装简单配置
- NumPy数值计算库-1
- 【Python】windows电脑 python3.6安装lxml库
- 《android开发艺术探索》读书笔记(五)--RemoteViews
- VB.Command()的参数
- Web应用开发平台 OpenJWeb