python新式类和经典类的区别实例分析


Posted in Python onMarch 23, 2020

本文实例讲述了python新式类和经典类的区别。分享给大家供大家参考,具体如下:

新式类就是  class person(object): 这种形式的, 从py2.2 开始出现的

新式类添加了:

__name__ is the attribute's name.
__doc__ is the attribute's docstring.
__get__(object) is a method that retrieves the attribute value from object.
__set__(object, value) sets the attribute on object to value.
__delete__(object, value) deletes the value attribute of object.

新式类的出现, 除了添加了大量方法以外, 还改变了经典类中一个多继承的bug, 因为其采用了广度优先的算法

Python 2.x中默认都是经典类,只有显式继承了object才是新式类
python 3.x中默认都是新式类,经典类被移除,不必显式的继承object

粘贴一段官网上的作者解释

python新式类和经典类的区别实例分析

是说经典类中如果都有save方法, C中重写了save() 方法,  那么寻找顺序是 D->B->A, 永远找不到C.save()

代码演示:

#!/usr/bin/env python3
#coding:utf-8
'''
  新式类和经典类的区别, 多继承代码演示

'''

class A:
  def __init__(self):
    print 'this is A'
  def save(self):
    print 'save method from A'

class B:
  def __init__(self):
    print 'this is B'

class C:
  def __init__(self):
    print 'this is c'
  def save(self):
    print 'save method from C'

class D(B, C):
  def __init__(self):
    print 'this is D'
d = D()
d.save()

结果显示

this is D
save method from C

注意: 在python3 以后的版本中, 默认使用了新式类, 是不会成功的

另外: 经典类中所有的特性都是可读可写的, 新式类中的特性只读的, 想要修改需要添加 @Texing.setter

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
python截取两个单词之间的内容方法
Dec 25 Python
Python中字符串与编码示例代码
May 20 Python
Python中字符串List按照长度排序
Jul 01 Python
python滑块验证码的破解实现
Nov 10 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 Python
python实现udp聊天窗口
Mar 31 Python
tensorflow常用函数API介绍
Apr 19 Python
Python如何批量生成和调用变量
Nov 21 Python
Python count函数使用方法实例解析
Mar 23 #Python
使用python实现飞机大战游戏
Mar 23 #Python
如何在Django中使用聚合的实现示例
Mar 23 #Python
python3注册全局热键的实现
Mar 22 #Python
浅谈Python线程的同步互斥与死锁
Mar 22 #Python
Django 项目布局方法(值得推荐)
Mar 22 #Python
python实现吃苹果小游戏
Mar 21 #Python
You might like
PHP环境中Memcache的安装和使用
2015/11/05 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
python命令行工具Click快速掌握
2019/07/04 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
教育学专业实习生的自我鉴定
2013/11/26 职场文书
校友会欢迎辞
2014/01/13 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
通报表扬范文
2015/01/17 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书