Python3 新式类 和 经典类

2023-10-17 07:48
文章标签 经典 python3 新式

本文主要是介绍Python3 新式类 和 经典类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python3 新式类 和 经典类


本文由 Luzhuo 编写,转发请保留该信息.
原文: http://blog.csdn.net/Rozol/article/details/71427902


以下代码以Python3.6.1为例
Less is more!
他们的区别主要体现在继承上
Python2.x 找父类初始化函数时, 经典类 按深度优先查找 新式类 按广度优先查找
Python3.x 找父类初始化函数时, 经典类 和 新式类 都是广度优先查找

#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2017/5/8'
# class_newold # 新式类 和 经典类(旧式类) 的演示
# 他们的区别主要体现在继承上
# Python2.x 找父类初始化函数时, 经典类 按深度优先查找 新式类 按广度优先查找
# Python3.x 找父类初始化函数时, 经典类 和 新式类 都是广度优先查找# === 经典类 ===
class Ao:def __init__(self):print("Ao")def show(self):print("s Ao")class Bo(Ao):def __init__(self):print("Bo")def show(self):Ao.show(self)  # 经典类写法(执行指定的父类函数)print("s Bo")class Co(Ao):def __init__(self):print("Co")def show(self):Ao.show(self)print("s Co")class Do(Bo, Co):def show(self):Bo.show(self)Co.show(self)print("s Do")# === 新式类 ===
class An(object):def __init__(self):print("An")def show(self):print("s An")class Bn(An):def __init__(self):print("Bn")def show(self):super(Bn, self).show()  # 新式类写法(按父类顺序自己执行)print("s Bn")class Cn(An):def __init__(self):print("Cn")def show(self):super(Cn, self).show()print("s Cn")class Dn(Bn, Cn):def show(self):super(Dn, self).show()print("s Dn")if __name__ == "__main__":# 创建对象# 初始化 __init__(self)时,只要找到一个就执行初始化,不会再继续执行第二个do = Do()  # => Bodn = Dn()  # => Bn# 初始化查找顺序为:# Python2.x: Bo -> Ao -> Co / Bn -> Cn -> An# Python3.x: Bo -> Co -> Ao / Bn -> Cn -> An# Python2.x 找父类初始化函数时, 经典类 按深度优先查找 新式类 按广度优先查找# Python3.x 找父类初始化函数时, 经典类 和 新式类 都是广度优先查找do.show()  # s Ao => s Bo => s Ao => s Co => s Do (自行决定调用)dn.show()  # s An => s Cn => s Bn => s Dn (深度优先调用)

这篇关于Python3 新式类 和 经典类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/223973

相关文章

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

python3 pip终端出现错误解决的方法详解

《python3pip终端出现错误解决的方法详解》这篇文章主要为大家详细介绍了python3pip如果在终端出现错误该如何解决,文中的示例方法讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下... 目录前言一、查看是否已安装pip二、查看是否添加至环境变量1.查看环境变量是http://www.cppcns

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

python3 gunicorn配置文件的用法解读

《python3gunicorn配置文件的用法解读》:本文主要介绍python3gunicorn配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python3 gunicorn配置文件配置文件服务启动、重启、关闭启动重启关闭总结python3 gun

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

Python3中Sanic中间件的使用

《Python3中Sanic中间件的使用》Sanic框架中的中间件是一种强大的工具,本文就来介绍Python3中Sanic中间件的使用,具有一定的参考价值,感兴趣的可以了解一下... 目录Sanic 中间件的工作流程中间件的使用1. 全局中间件2. 路由中间件3. 异常处理中间件4. 异步中间件5. 优先级

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

HotSpot虚拟机的经典垃圾收集器

读《深入理解Java虚拟机》第三版笔记。 关系 Serial、ParNew、Parallel Scavenge、Parallel Old、Serial Old(MSC)、Concurrent Mark Sweep (CMS)、Garbage First(G1)收集器。 如图: 1、Serial 和 Serial Old 收集器 2、ParNew 收集器 3、Parallel Sc

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

嵌入式面试经典30问:二

1. 嵌入式系统中,如何选择合适的微控制器或微处理器? 在嵌入式系统中选择合适的微控制器(MCU)或微处理器(MPU)时,需要考虑多个因素以确保所选组件能够满足项目的具体需求。以下是一些关键步骤和考虑因素: 1.1 确定项目需求 性能要求:根据项目的复杂度、处理速度和数据吞吐量等要求,确定所需的处理器性能。功耗:评估系统的功耗需求,选择低功耗的MCU或MPU以延长电池寿命或减少能源消耗。成本