面向对象3-继承
一、多继承 MRO 即 method resolution order (方法解释顺序),主要用于在多继承时判断属性的路径。 python新式类的多继承顺序采用 c3算法 如果继承至一个基类: class B(A) 这时B的mro序列为[B,A] 如果继承至多个基类 class B(A1,A2,A3 ...) 这时B的mro序列 mro(B) = [B] + merge(mro(A1), mro(A2), mro(A3) ..., [A1,A2,A3]) merge操作就是C3算法的核心。 遍历执行merge操作的序列, 如果一个序列的第一个元素,是其他序列中的第一个元素,或不在其他序列出现,则从所有执行merge操作序列中删除这个元素,合并到当前的mro中。 即使满足:序列中第一个元素,且在其他序列要么也出现在第一个位置,要么不出现 merge操作后的序列,继续执行merge操作,直到merge操作的序列为空。 如果merge操作的序列无法为空,则说明不合法 python官方网站相关 例子: class A(O):pass class B(O):pass class C(O):pass class E(A,B):pass class F(B,C):pass class G(E,F):pass A、B、C都继承至一个基类,所以mro序列依次为[A,O]、[B,O]、[C,O]