【Python】类的多重继承 、深度优先、广度优先

来源:互联网 发布:mac品牌竞争对手 编辑:程序博客网 时间:2024/06/06 02:44

一、多重继承

1、经典类 vs 新式类

Python 2.x中默认都是经典类,只有显式继承了object才是新式类
Python 3.x中默认都是新式类,不必显式的继承object

2、多重继承

python中一个类可以同时继承多个类

class 类名(父类1,父类2,...)          类体  

二、深度优先

1、经典类采用深度优先搜索

class P1:        def foo(self):                      print 'p1-foo'      class P2 :        def foo(self):            print 'p2-foo'          def bar(self):            print 'p2-bar'      class C1 (P1,P2):        pass       class C2 (P1,P2):        def bar(self):            print 'C2-bar'        class D(C1,C2):        pass   d = D()  d.foo() # 输出 p1-foo   d.bar() # 输出 p2-bar 

2、说明:

实例d调用foo()时,搜索顺序是 D => C1 => P1

实例d调用bar()时,搜索顺序是 D => C1 => P1 => P2

经典类的搜索方式:从左到右,深度优先

三、广度优先

1、新式类采用广度优先搜索

class P1(object):        def foo(self):                      print 'p1-foo'      class P2(object):       def foo(self):            print 'p2-foo'          def bar(self):            print 'p2-bar'      class C1 (P1,P2):        pass       class C2 (P1,P2):        def bar(self):            print 'C2-bar'        class D(C1,C2):        pass   d=D()   d.foo() # 输出 p1-foo   d.bar() # 输出 c2-bar

2、说明

实例d调用foo()时,搜索顺序是 D => C1 => C2 => P1
实例d调用bar()时,搜索顺序是 D => C1 => C2

四、总结图示


原创粉丝点击