python新式类与旧式类

Posted 1314520xh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

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

 

以上是关于python新式类与旧式类的主要内容,如果未能解决你的问题,请参考以下文章

py15 面向对象编程

Python 2.7中的旧式和新式类[重复]

关于 python 新式类和旧式类继承顺序的验证

python 之简单浅谈新式类和旧式类(或称经典类)

旧式类、新式类和元类

python开发学习-day07(面向对象之多态类的方法反射新式类and旧式类socket编程)