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 相关文章推荐
python学习数据结构实例代码
May 11 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
python批量制作雷达图的实现方法
Jul 26 Python
python生成随机图形验证码详解
Nov 08 Python
详解Python中的分组函数groupby和itertools)
Jul 11 Python
python读取Excel实例详解
Aug 17 Python
解决pyttsx3无法封装的问题
Dec 24 Python
在Django中实现添加user到group并查看
Nov 18 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
Python for循环搭配else常见问题解决
Feb 11 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 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+MYSQL实现读写分离简单实战
2017/03/13 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
微信小程序用canvas画图并分享
2020/03/09 Javascript
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
Python Django搭建网站流程图解
2020/06/13 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
工程师岗位职责
2013/11/08 职场文书
领班岗位职责范文
2014/02/06 职场文书
入党推优材料
2014/06/02 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
顶岗实习计划书
2015/01/16 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang