码迷,mamicode.com
首页 > 编程语言 > 详细

Python---面向对象编程-2

时间:2018-04-08 19:01:32      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:style   tty   efi   one   open   UI   class   一个   src   

.经典类

.新式类

.深度优先

.广度优先

首先经典类是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

标签:style   tty   efi   one   open   UI   class   一个   src   

原文地址:https://www.cnblogs.com/GaJack/p/8746665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!