Python多重继承MRO相关问题,pythonmro相关问题,关于python的多重继
Python多重继承MRO相关问题,pythonmro相关问题,关于python的多重继
关于python的多重继承中的MRO问题,新式类中的C3算法是怎么样子的....C3和广度优先的区别在哪里?
参考: https://www.python.org/download/releases/2.3/mro/
1、C3算法解决实例访问属性和方法的解析顺序问题,核心是merge。2.3以前Python版本采用深度优先算法。
2、C3算法是这样子的:在merge列表中,如果第一个序列mro的第一个类是出现在其它序列,并且也是第一个,或者不出现其它序列,那么这个类就会从这些序列中删除,并合到访问顺序列表中。
3、例子:
class A(O):passclass B(O):passclass C(O):passclass D(A,B):passclass E(C,D):pass
mro(A) = [A, O]
mro(B) = [B, O]
mro(C) = [C, O]
mro(D) = [D] + merge(mro(A), mro(B), [A, B])
= [D] + merge([A, O], [B, O], [A, B])
= [D, A] + merge([O], [B, O], [B])
= [D, A, B] + merge([O], [O])
= [D, A, B, O]
mro(E) = [E] + merge(mro(C), mro(D), [C, D])
= [E] + merge([C, O], [D, A, B, O], [C, D])
= [E, C] + merge([O], [D, A, B, O], [D])
= [E, C, D] + merge([O], [A, B, O])
= [E, C, D, A, B] + merge([O], [O])
= [E, C, D, A, B, O]
编橙之家文章,
相关内容
- Python将字符串内\n去掉用什么方法,python字符串,从文件
- 谁能详细解释一下tornado异步非阻塞框架,tornado异步,
- python大师帮我看看源码中def自定义函数有什么作用,
- python正则替换字符串中间字符表达式怎么写,python字符
- python微信平台自动回复信息如何写,python自动回复,就是
- Python遍历Geojson数据坐标应用问题,pythongeojson,有一大推
- Python文件同应用打包方法是?,,如Goagent中好像把
- 求Python方法检测变量名,python检测变量,如题,除了用
- 不小心删除了pythonwin,重装之后提示不是有效的Win32应用
- 求python删除相连空格并保留唯一的方法,python空格,py
评论关闭