我正在努力更好地理解Python&遇到了这个例子:
class A:
def process(self):
print('A process()')
class B(A):
pass
class C(A):
def process(self):
print('C process()')
class D(B,C):
pass
obj = D()
obj.process()
其打印";C进程((";。我理解为什么,因为订单是D>B>C>A.但是,当类C不继承A时;一个进程((;打印&则顺序转移到D>B>A>C.是什么原因导致订单转移到这里?为什么C超类现在没有在A类之前到达?
C3线性化算法在某种程度上是深度优先的,因此从B
(在基类列表中列在C
之前(可到达的A
被添加到C
之前。
理由是CCD_;B型";比";类似于"C";,所以任何属于";B";应出现在";C";。
(为了好玩,看看当C
仍然继承自A
时,如果您尝试类似class D(B, A, C)
的东西会发生什么。(