一、多重继承
1、经典类 vs 新式类
Python 2.x中默认都是经典类,只有显式继承了object才是新式类
Python 3.x中默认都是新式类,不必显式的继承object2、多重继承
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-bar2、说明:
实例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-bar2、说明
实例d调用foo()时,搜索顺序是 D => C1 => C2 => P1
实例d调用bar()时,搜索顺序是 D => C1 => C2
四、总结图示