天天看点

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