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
View Code

新式类详解

  由上可知,在类继承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
View Code

 说到经典类和新式类,就一定要提一提深度优先和广度优先这两个名词。

新式类的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
View Code

执行顺序为: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
View Code

执行顺序为:D->A->B->C->Object

以上是关于Python---面向对象编程-2的主要内容,如果未能解决你的问题,请参考以下文章

Python基础-第六天-面向对象编程

Python -- 面向对象:初识

python-面向对象编程设计与开发

Python之路第六篇python基础 之面向对象

Python学习(十三)—— 面向对象程序设计

​Python中面向对象的编程