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创建XML文档
Mar 01 Python
使用python实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
python使用urllib2实现发送带cookie的请求
Apr 28 Python
Python编程之Re模块下的函数介绍
Oct 28 Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 Python
一文读懂Python 枚举
Aug 25 Python
Python:__eq__和__str__函数的使用示例
Sep 26 Python
python调用百度AI接口实现人流量统计
Feb 03 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环境搭建最新方法
2006/09/05 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
php使用curl并发减少后端访问时间的方法分析
2016/05/12 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
jQuery chili图片远处放大插件
2009/11/30 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
Python监控主机是否存活并以邮件报警
2015/09/22 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Python 读写文件的操作代码
2018/09/20 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
简单了解python数组的基本操作
2019/11/26 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
关于.NET, HTML的五个问题
2012/08/29 面试题
人事档案接收函
2014/01/12 职场文书
25岁生日感言
2014/01/13 职场文书
材料加工工程求职信
2014/02/19 职场文书
生日寄语大全
2014/04/08 职场文书
收款委托书
2014/10/14 职场文书
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB