[TimLinux] Python C3 MRO

MROMethod Resolution Order,即方法解析顺序,是python中用于处理二义性问题的算法

采用过的算法:

1. DFS(深度优先算法)

2. BFS(广度优先算法)

3. C3算法

 

结合下面这张图的例子来说明C3算法的执行步骤(图中箭头由子类指向父类):

  

首先找入度为0的点,只有A,把A取出,把A相关的边去掉,再找下一个入度为0的点,B和C满足条件,从左侧开始取,取出B,这时顺序是AB,然后去掉B相关的边,这时候入度为0的点有E和C,依然取左边的E,这时候顺序为ABE,接着去掉E相关的边,这时只有一个点入度为0,那就是C,取C,顺序为ABEC。去掉C的边得到两个入度为0的点D和F,取出D,顺序为ABECD,然后去掉D相关的边,那么下一个入度为0的就是F,然后是object。所以最后的排序就为ABECDFobject。

posted @ 2019-11-06 10:36  TimLinux  阅读(207)  评论(0编辑  收藏  举报