c3算法

python MRO:C3算法

↘锁芯ラ 提交于 2021-02-11 18:37:11
在 python 2.2 之后,python 实现了一个新的MRO算法:C3算法,用于方法解析顺序 。 一、什么是方法解析顺序 方法解析顺序 :多重继承时,用于在子类中调用父类方法时确定调用哪个父类的方法 。 多重继承代码示例: #!/usr/bin/python #-*- coding:utf8 -*- class A(object): def echo(self): print "class_A" class B(A): pass #def echo(self): # print "class_B" class C(A): def echo(self): print "class_C" class D(B,C): pass print D.__mro__ //python使用__mro__ 来存储线性化计算的结果。 ubuntu@yee:/tmp$ python mro.py (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <type 'object'>) 可以看到顺序为: D --> B --> C --> A --> object 当子类D调用echo方法时: D().echo() python 先搜索 D 本地类,再搜索B,有则返回