Python中经典类和新式类的区别
首先了解一下什么是经典类,什么是新式类
class Person: #经典类pass
class Person2(object): #新式类pass
#类名首字母都大写
#在python3里面经典类和新式类没有任何区别
经典类与新式类在python3中是没有任何区别的,主要区别是在python2中多继承的时候。
区别:
- 经典类是:深度优先
- 新式类是:广度优先
在python3里面都是广度优先
下面我们举例子来说明:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class A: #这样定义A是经典类def x(self):print('A')
class B(A):# def x(self):# print('B')pass
class C(A):def x(self):print('C')class D(B,C):pass
s = D()
s.x()
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class A(object): #这样定义A是新式类def x(self):print('A')
class B(A):# def x(self):# print('B')pass
class C(A):def x(self):print('C')class D(B,C):pass
s = D()
s.x()
以下分析情况都是基于python2
1.这样定义A类,A是经典类,那么在继承后D调用x()方法的时候顺序是怎样的呢?
首先是从B类里面去找x()方法,如果B类中没有,就会从A类里面去找,如果A类中也没有x()方法,最后才会从C类里面去找;
2.那么如果A类定义的时候是新式类,那么在继承后D调用x()方法的时候顺序是怎样的呢?
首先是从B类里面去找x()方法,如果B类中没有,就会从C类里面去找,如果C类中也没有x()方法,最后才会从A类里面去找;
画个比较丑的图更直观的说明一下:
Python中经典类和新式类的区别相关推荐
- python经典类和新式类_python中经典类和新式类的区别
在定义class的时候,有几种常见的写法,比如: class A: pass class B(): pass class C(object): pass 在python 2中查看以上各个class的类 ...
- python经典类新式类_Python新式类与经典类(旧式类)的区别
看写poc的时候看到的,思考了半天,现在解决了 转载自http://blog.csdn.net/zimou5581/article/details/53053775 Python中类分两种:旧式类和新 ...
- python 经典类和新式类
DAY 12. python新式类和旧式类 继承自object基类的类叫做新式类,否则叫做旧式类,python3中的类默认是新式类,之前版本默认是旧式类 root@kail:~# python pyt ...
- Python的面向对象,魔术方法、类的三大特征、自省、实例空间、经典类与新式类
目录 1.什么是面向对象 1.1 面向过程 1.2 面向对象 1.3 面向对象的优点 2.类 2.1 什么是类.对象,方法和属性 2.2 类的定义和使用 2.2.1 类名规范和类的写法 2.3 魔术方 ...
- python 新式类 旧式类_Python新式类与经典类(旧式类)的区别
Python中类分两种:旧式类和新式类: ➤新式类都从object继承,经典类不需要. ➤新式类的MRO(method resolution order 基类搜索顺序)算法采用C3算法广度优先搜索,而 ...
- python新式类好还是经典类_python新式类和经典类的区别?
python新式类和经典类的区别? 1)首先,写法不一样: class A: pass class B(object): pass 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. ...
- python 经典类与新式类
经典类和新式类的主要区别就是类的继承的方式 ,经典类遵循深度优先的规则,新式类遵循广度优先的规则.至于什么是深度优先什么是广度优先,可以看如下示例: class A(object):def print ...
- Python经典类与新式类已经经典继承和新式继承;以及继承顺序
经典类和新式类,以及经典继承和新式继承 # class Animal: #经典类 class Animal(object): #新式类def __init__(self,name):self.name ...
- 多继承、经典类与新式类、新式类的C3算法详解
多继承Python2版本class A(object) ---> 新式类class B ---> 经典类 Python3版本默认都是新式类 经典类和新式类的不同在于多继承时继承的顺序不同经 ...
最新文章
- 深入理解ceph-disk activate 源码逻辑
- springMvc 的参数验证 BindingResult result 的使用
- 学习笔记Hadoop(八)—— Hadoop集群的安装与部署(5)—— Hadoop配置参数介绍、Hadoop集群启动与监控
- Servlet详解之两个init方法的作用
- VS中标志寄存器表示
- python去掉最高分和最低分_去掉一个最高分,去掉一个最低分求平均值(trimmean)...
- 51NOD 1088 最长回文子串1089 最长回文子串 V2(Manacher算法)
- IDEA中jsp页面写out.println会报错?
- (转载)js对象原来也有类、实例属性和原型属性
- 使用Eclipse构建Maven项目 (step-by-step) (转收藏)
- 开源阅读书源_免费开源网络文学阅读器(万本小说免费阅读)
- 易知大学“大数据挖掘与分析(Python)”免费学习平台
- 【报告分享】2021巨量引擎日化行业年度报告-巨量算数(附下载)
- delphi在window10下用uniGUI开发isapi的调试方法
- 支持查看朋友圈的微信Mac版客户端
- python用户输入文字_python中用户输入的关键字
- 基于matlab的有噪声语音信号处理,基于matlab的有噪声语音信号处理毕设
- 关于C++中的emplace_back的解释
- Unity 狙击枪开镜
- solidworks三维建模竞赛练习题