Python3 新式类 和 经典类
来源:互联网 发布:ymnets源码下载 编辑:程序博客网 时间:2024/05/01 07:18
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() # => Bo dn = 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 (深度优先调用)
0 0
- Python3 新式类 和 经典类
- Python新式类和经典类
- python 经典类和新式类
- Python新式类和经典类的区别
- Python经典类和新式类的区别
- Python新式类和经典类的区别
- Python 经典类和新式类 super用法 (四)
- Python中新式类和经典类的区别
- 【Python】python 中新式类和经典类
- python新式类和经典类的区别
- python新式类和经典类的区别?
- Python之经典类VS新式类和Supper
- Python新式类和经典类的区别
- python笔记: 经典类和新式类的区别
- Python新式类和经典类的区别
- 细说python类1——经典类和新式类
- 【python学习】新式类和经典类——第一篇博客
- Python高级编程——15.新式类和经典类的区别
- 决策树算法实现(一)
- python学习(1)python基础、数据类型和变量
- 钉钉接口发送消息失败
- AR多标签识别
- Selenium2.0功能测试之访问站点及获取页面信息(Java版) 【转】
- Python3 新式类 和 经典类
- Java中多态的一些简单理解
- socket编程
- final .....finally ...... 和Finalize ......区别
- arcgis for javascript 用小照片做图标
- Linux学习篇第三章之~DNS服务器的配置及拓展
- oj459. Repeated Substring Pattern
- Epoll在LT和ET模式下的读写方式
- C/C++控制动态显示当前系统时间