0
点赞
收藏
分享

微信扫一扫

python新式类与旧式类

python2.X是经典类【旧式类】:

是以深度优先【】

但是在Python2.x中,默认都是经典类,只有显式继承了object才是新式类,即:
​​​class Person(object):pass​​​ 新式类写法
​​​class Person():pass​​​ 经典类写法
​​​class Person:pass​​ 经典类写法

他们最明显的区别在于继承搜索的顺序发生了改变,即
经典类多继承搜索顺序(深度优先):
先深入继承树左侧查找,然后再返回,开始查找右侧,如图所示:

1           A

2-1 B          2-2 C

3         D 

     A()

B(A)    C(A)

    D(B,C)

 

pyton2深度优先:3-->2-1-->1-->2-2-->1

 

python3.x新式类:

是以广度优先【】

在Python 3.x中取消了经典类,默认都是新式类,并且不必显式的继承object,也就是说:
​​​class Person(object):pass​​​​class Person():pass​​​​class Person:pass​​三种写法并无区别,推荐第一种

1           A

2-1 B          2-2 C

3         D 

     A()

B(A)    C(A)

    D(B,C)

 pyton3  广度优先 3-->2-1-->2-2-->1

新式类多继承搜索顺序(广度优先):
先在水平方向查找,然后再向上查找,如图所示:

 

心有猛虎,细嗅蔷薇

举报

相关推荐

0 条评论