【Python】类的多重继承 、深度优先、广度优先
2017-12-17 11:03
274 查看
一、多重继承
1、经典类 vs 新式类
Python 2.x中默认都是经典类,只有显式继承了object才是新式类
Python 3.x中默认都是新式类,不必显式的继承object
2、多重继承
python中一个类可以同时继承多个类
二、深度优先
1、经典类采用深度优先搜索
2、说明:
实例d调用foo()时,搜索顺序是 D => C1 => P1
实例d调用bar()时,搜索顺序是 D => C1 => P1 => P2
经典类的搜索方式:从左到右,深度优先
三、广度优先
1、新式类采用广度优先搜索
2、说明
实例d调用foo()时,搜索顺序是 D => C1 => C2 => P1
实例d调用bar()时,搜索顺序是 D => C1 => C2
四、总结图示
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
四、总结图示
相关文章推荐
- python 多重继承 深度优先还是广度优先
- Python学习笔记8-类的继承 、深度优先、广度优先
- Python学习笔记8-类的继承 、深度优先、广度优先
- 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理
- python数据结构之图深度优先和广度优先实例详解
- Python学习笔记8-类的继承 、深度优先、广度优先
- python数据结构与算法——图的广度优先和深度优先的算法
- python数据结构之图深度优先和广度优先
- Python学习笔记8-类的继承 、深度优先、广度优先
- python数据结构之图深度优先和广度优先实例详解
- Python爬虫从入门到放弃(十)之 关于深度优先和广度优先
- python深度优先与广度优先的遍历算法区别
- python深度优先与广度优先的遍历算法比较
- python数据结构之图深度优先和广度优先
- python数据结构之图深度优先和广度优先
- python 图的遍历-深度优先和广度优先
- python数据结构之图深度优先和广度优先实例详解
- 深度优先和广度优先的Python实现
- python 图 遍历-深度优先和广度优先 II
- python遍历文件夹——深度优先(DFS)/广度优先(BFS)