python新式类和旧式类区别
python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类。
为什么要在2.2中引进new style class呢?官方给的解释是:
为了统一类(class)和类型(type)。
在2.2之前,比如2.1版本中,类和类型是不同的,如a是ClassA的一个实例,那么a.__class__返回 ‘ class __main__.ClassA‘ ,type(a)返回总是<type 'instance'>。而引入新类后,比如ClassB是个新类,b是ClassB的实例,b.__class__和type(b)都是返回‘class '__main__.ClassB' ,这样就统一了。
引入新类后,还有其他的好处,比如更多的内置属性将会引入,描述符的引入,属性可以来计算等等。
为了向前兼容,默认情况下用户定义的类为经典类,新类需要继承自所有类的基类 object 或者继承自object的新类。
值得注意的地方是,虽然使用的是最新的python(2.7),但是一些特性不会在旧式类起作用。
所以,为了确保自己使用的是新式类,有两种以下方法:
1. 元类,在类模块代码的最前面加入如下代码 __metaclass__ = classname(自定义的某个新式类)。
2. 类都从内建类object直接或者间接地继承。
如果不需要兼容旧式类,旧版本的类,那么就保持都是新式类。
在Python3里面,不存在这些问题了,因为所有的类都是object类的子类(隐式)。
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
python新式类和旧式类区别相关推荐
- python新式类和旧式类的区别_浅谈python新式类和旧式类区别
python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类. 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type) ...
- python 新式类和旧式类_python新式类和旧式类区别
python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类. 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type) ...
- python 新式类与旧式类的区别
前言 新式类是python2.2引入的,python2存在新式类与旧式类的区别,而python3全部应用的是新式类. 声明方式 对于python3,以下声明方式作用是相同的: class Aclass ...
- Python:新式类和旧式类
1.介绍 Python2.1之前,只存在旧式类,从Python2.2开始,Python引入了新式类. 从定义形式上看,新式类和旧式类的区别:新式类在创建时继承了内置的object对象,而旧式类没有 ...
- python3新式类_python新式类和旧式类区别
python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类. 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type) ...
- python3 新式类_python新式类和旧式类区别
python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类. 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type) ...
- python中的新式类与旧式类的一些基于descriptor的概念(下)
3. Descriptor介绍 3.1 Descriptor代码示例 3.2 定义 3.3 Descriptor Protocol(协议) 3.4 Descriptor调用方法 4. 基于Descri ...
- python中的新式类与旧式类的一些基于descriptor的概念(上)
python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...
- python经典类新式类_Python新式类与经典类(旧式类)的区别
看写poc的时候看到的,思考了半天,现在解决了 转载自http://blog.csdn.net/zimou5581/article/details/53053775 Python中类分两种:旧式类和新 ...
最新文章
- python 直接if判断和is not None的区别
- java高效代码_Java工程师该如何编写高效代码?
- java-------------华为-----------字符串链接最长路径查询
- Redis详解——常用命令总结(完善中)
- 手摇泵PHP一32_节能手摇泵的制作方法
- vue项目将token存在(vuex)store和localstorage中
- P2153-晨跑【费用流,网络流,拆点】
- Idea导入maven工程,并运行
- MFC编程——Where is WinMain?
- 使用SniperPhish进行电子邮件钓鱼
- tcl中数字加减的怪异现象
- 算法:什么是棒球游戏问题?
- Python深度学习05——Keras循环神经网络实现股价预测
- python牛顿法算立方根_牛顿迭代法求解立方根
- 2020/11/05随记 基于jini的C++和Java交互
- java三元表达式必须返回_java – 三元运算符的右手表达式必须兼容...
- iOS大型项目开发架构
- Fast DDS和Cyclone DDS对比性能测试
- android studio添加繁体,Android (Android studio3.0.1)一篇可以实现app多语言的转换(简单操作)的教程-Go语言中文社区...
- 让div与浏览器高度相同
热门文章
- 屏幕长度与像素长度的转换
- 超详细的Redisson实现分布式锁原理解析
- WIN32 进程间通讯-共享内存
- java通过反射调用方法_Java_通过反射调用类中的方法
- python-数据分析-pandas基础知识
- 【折腾日记GEN8_2】ESXI的安装
- 2022出海拉美:秘鲁电商市场现状及发展前景
- 关于站群的教程,迷途知返不晚
- python selenium 教程(-) 安装
- 论文研读 —— 7. Very Deep Convolutional Networks for Large-Scale Image Recognition (1/3)