Python---面向对象编程-2
Posted 学长的私房课
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python---面向对象编程-2相关的知识,希望对你有一定的参考价值。
.经典类
.新式类
.深度优先
.广度优先
首先经典类是Python 2.x中的一个名词,Python 2.x默认是经典类,只有显示继承了object才是新式类;在Python3.x中默认都是新式类。
经典类详解
object是“所有类之母”。而在Python2.x当中要写上object才是新式类,所以很显然什么都不写就是经典类了,事实上就是如此,如果你没有指定一个父类,或者如果所子类化的基本类没有父类,你这样就创建了一个经典类。我们来看一个例子:
1 #!/usr/bin/python2 2 #-*- coding:utf-8 -*- 3 4 class MyObjectType: 5 ‘define MyObjectType classic class‘ 6 class_suite
新式类详解
由上可知,在类继承object这个基类的就是新式类。但在Python3.x中默认都是新式类,经典类被移除,不必显示继承object。
1 #!/usr/bin/python3 2 #-*- coding:utf-8 -*- 3 4 class MyObjectType(object): 5 ‘define MyObjectType new class‘ 6 class_suite 7 8 class MyNewObjectType(): 9 ‘define MyObjectType new class‘ 10 class_suite
说到经典类和新式类,就一定要提一提深度优先和广度优先这两个名词。
新式类的MRO算法采用C3算法广度优先搜索,而经典类的MRO算法则是采用深度优先搜索。
深度优先
1 #!/usr/bin/python2 2 #-*- coding:utf-8 -*- 3 4 class A: 5 pass 6 class B: 7 pass 8 class C(B): 9 pass 10 class D(C,A): 11 pass
执行顺序为:D->C->B,->A
广度优先
1 #!/usr/bin/python3 2 #-*- coding:utf-8 -*- 3 4 class A(object): 5 pass 6 class B(object): 7 pass 8 class C(object): 9 pass 10 class D(A,B,C): 11 pass
执行顺序为:D->A->B->C->Object
以上是关于Python---面向对象编程-2的主要内容,如果未能解决你的问题,请参考以下文章