全国咨询/投诉热线:400-618-9090

首页技术文章正文

Python新式类与经典类的区别

更新时间:2018-11-26 来源:黑马程序员 浏览量:

1. 截止到python2.1,只存在旧式类。旧式类中,类名和type是无关的:如果x是一个旧式类,那么x.__class__定义了x的类名,但是type(x)总是返回<type 'instance'>。这反映了所有的旧式类的实例是通过一个单一的叫做instance的内建类型来实现的,这是它和类不同的地方。

2. 新式类是在python2.2为了统一类和实例引入的。一个新式类只能由用户自定义。如果x是一个新式类的实例,那么type(x)和x.__class__是一样的结果(尽管这不能得到保证, 因为新式类的实例的__class__方法是允许被用户覆盖的)。

3. Python 2.x中默认都是经典类,只有显式继承了object才是新式类

4. Python 3.x中默认都是新式类,经典类被移除,不必显式的继承

5. 新式类的MRO算法采用C3算法广度优先搜索,而旧式类的MRO算法是采用深度优先搜索

6. 新式类相同父类只执行一次__init__函数,经典类重复执行多次。

Python2.X中:

1543223303710_1.jpg

执行顺序为:D>C>A>B
Python3.X中:
1543223317064_2.jpg

执行顺序为:D>C>B>A>object



作者:传智播人工智能+Python培训学院

首发:http://python.itheima.com

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名