首先了解一下什么是经典类,什么是新式类

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中经典类和新式类的区别相关推荐

  1. python经典类和新式类_python中经典类和新式类的区别

    在定义class的时候,有几种常见的写法,比如: class A: pass class B(): pass class C(object): pass 在python 2中查看以上各个class的类 ...

  2. python经典类新式类_Python新式类与经典类(旧式类)的区别

    看写poc的时候看到的,思考了半天,现在解决了 转载自http://blog.csdn.net/zimou5581/article/details/53053775 Python中类分两种:旧式类和新 ...

  3. python 经典类和新式类

    DAY 12. python新式类和旧式类 继承自object基类的类叫做新式类,否则叫做旧式类,python3中的类默认是新式类,之前版本默认是旧式类 root@kail:~# python pyt ...

  4. Python的面向对象,魔术方法、类的三大特征、自省、实例空间、经典类与新式类

    目录 1.什么是面向对象 1.1 面向过程 1.2 面向对象 1.3 面向对象的优点 2.类 2.1 什么是类.对象,方法和属性 2.2 类的定义和使用 2.2.1 类名规范和类的写法 2.3 魔术方 ...

  5. python 新式类 旧式类_Python新式类与经典类(旧式类)的区别

    Python中类分两种:旧式类和新式类: ➤新式类都从object继承,经典类不需要. ➤新式类的MRO(method resolution order 基类搜索顺序)算法采用C3算法广度优先搜索,而 ...

  6. python新式类好还是经典类_python新式类和经典类的区别?

    python新式类和经典类的区别? 1)首先,写法不一样: class A: pass class B(object): pass 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. ...

  7. python 经典类与新式类

    经典类和新式类的主要区别就是类的继承的方式 ,经典类遵循深度优先的规则,新式类遵循广度优先的规则.至于什么是深度优先什么是广度优先,可以看如下示例: class A(object):def print ...

  8. Python经典类与新式类已经经典继承和新式继承;以及继承顺序

    经典类和新式类,以及经典继承和新式继承 # class Animal: #经典类 class Animal(object): #新式类def __init__(self,name):self.name ...

  9. 多继承、经典类与新式类、新式类的C3算法详解

    多继承Python2版本class A(object) ---> 新式类class B ---> 经典类 Python3版本默认都是新式类 经典类和新式类的不同在于多继承时继承的顺序不同经 ...

最新文章

  1. 深入理解ceph-disk activate 源码逻辑
  2. springMvc 的参数验证 BindingResult result 的使用
  3. 学习笔记Hadoop(八)—— Hadoop集群的安装与部署(5)—— Hadoop配置参数介绍、Hadoop集群启动与监控
  4. Servlet详解之两个init方法的作用
  5. VS中标志寄存器表示
  6. python去掉最高分和最低分_去掉一个最高分,去掉一个最低分求平均值(trimmean)...
  7. 51NOD 1088 最长回文子串1089 最长回文子串 V2(Manacher算法)
  8. IDEA中jsp页面写out.println会报错?
  9. (转载)js对象原来也有类、实例属性和原型属性
  10. 使用Eclipse构建Maven项目 (step-by-step) (转收藏)
  11. 开源阅读书源_免费开源网络文学阅读器(万本小说免费阅读)
  12. 易知大学“大数据挖掘与分析(Python)”免费学习平台
  13. 【报告分享】2021巨量引擎日化行业年度报告-巨量算数(附下载)
  14. delphi在window10下用uniGUI开发isapi的调试方法
  15. 支持查看朋友圈的微信Mac版客户端
  16. python用户输入文字_python中用户输入的关键字
  17. 基于matlab的有噪声语音信号处理,基于matlab的有噪声语音信号处理毕设
  18. 关于C++中的emplace_back的解释
  19. Unity 狙击枪开镜
  20. solidworks三维建模竞赛练习题

热门文章

  1. java程序员保持天天快乐的6个习惯
  2. 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
  3. 【LeetCode】LRU Cache 解决报告
  4. Linux下克隆的修改IP
  5. 正则表达式中的小括号用法
  6. 用master-worker模型比对团队管理
  7. 如何做好生产现场管理及信息化应用
  8. 在 Excel 2016 for Windows 中启用 Power View
  9. 删除前导0后缀0的几种方法
  10. 如何在Excel中使用VB宏连接SAP系统