Python中面向对象深度优先和广度优先是什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
经典类采用深度优先搜索
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 实例d调用foo()时,搜索顺序是 D => C1 => P1
实例d调用bar()时,搜索顺序是 D => C1 => P1 => P2
新式类采用广度优先搜索
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 实例d调用foo()时,搜索顺序是 D => C1 => C2 => P1 实例d调用bar()时,搜索顺序是 D => C1 => C2