python中的类分为经典类(旧式类)和新式类。python的新式类是2.2版本为了统一类和实例引进来的。
在Python2.x中默认都是经典类,只有显式继承了object的才是新式类。
如下所示:
# 新式类,显示继承objectclass A(object): pass# 经典类class A(): pass# 经典类class A: pass
在python3.x中取消了经典类,默认都是新式类,并且新式类不需要显式的继承object对象。如下所示,这三种写法都可以,并无区别:
# 第一种class A(object): pass# 第二种class A(): pass# 第三种class A: pass
新式类和经典类的区别
- 新式类都从object继承,经典类不需要。
- 经典类的
MRO
(method resolution order 基类搜索顺序)算法是采用深度优先搜索,而新式类的MRO
算法采用C3算法广度优先搜索。 - 新式类相同父类只执行一次构造函数,经典类重复执行多次。
新式类和经典类最大的不同在于继承搜索的顺序发生了改变。
经典类采用深度优先搜索,也就是先深入继承树左侧查找,然后再返回,开始查找右侧:
class A: def show(self): print("From A")class B(A): def show(self): print("From B")class C(A): def show(self): print("From C")class D(B, C): passd = D()d.show()# From B
新式类采用广度优先搜索,先在水平方向查找,再向上查找:
class A(object): def show(self): print("From A")class B(A): def show(self): print("From B")class C(A): def show(self): print("From C")class D(B, C): passd = D()d.show()# From C
参考:https://www.9xkd.com/
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何在 Java 中创建 Date 对象?(java怎么创建date对象)
- 如何利用 Java Milo 开展网络编程?(如何使用Java Milo进行网络编程)
- 如何高效使用Redis客户端进行故障排查
- 如何使用 getresources 获取文件系统资源?(getresources如何获取文件系统资源)
- 如何利用 Java 的多线程提升效率?(Java的多线程如何提高效率 )
- Java 中 file.exists 方法在不同操作系统下的表现及差异(java file.exists在不同操作系统下)
- 在 Java 中,究竟什么是线程安全?(java中什么是线程安全)
- Java 中 toString 方法该如何使用呢?(java中tostring方法如何使用)
- JavaScript函数式编程有哪些实用技巧?(JavaScript函数式编程有啥技巧)
- Java 中 random 函数的异常处理机制究竟是什么?(java random函数的异常处理机制是什么)
猜你喜欢
AI推送时光机python中的新式类和经典类的区别
后端开发2023-06-02
怎么理解python 经典类与新式类的继承
后端开发2023-06-04
python类中super()和__init__()的区别
后端开发2022-06-04
python类中super()和__init__()的区别是什么
后端开发2023-06-02
c++中类和对象的区别
后端开发2024-05-08
c++中结构和类的区别
后端开发2024-05-09
Python中类变量和实例变量的区别
后端开发2024-04-02
C#中值类型和引用类型的区别
后端开发2024-04-02
Java String类和StringBuffer类的区别介绍
后端开发2024-04-02
string类和stringbuffer类的区别是什么
后端开发2023-09-14
c++中结构体和类的区别
后端开发2024-05-10
MySQL中varchar和char类型的区别
后端开发2024-04-02
js中值类型和引用类型的区别介绍
后端开发2024-04-02
ts中的void和never类型及区别
后端开发2023-05-18
js中值类型和引用类型的区别是什么
后端开发2023-07-02
Python字典和常规字典的区别是什么
后端开发2023-06-17
php中类和对象的区别有哪些
后端开发2023-06-06
浅析Python中元祖、列表和字典的区别
后端开发2022-06-04
C#中静态类和静态类成员的区别是什么
后端开发2023-06-17
咦!没有更多了?去看看其它编程学习网 内容吧