多重继承,为什么的name属性不是C0呢

class C0:
name='C0'

class C1:
num=1

class C2(C0):
num=2

class C3:
name='C3'

class C4(C1,C2,C3,C0):
pass

t=C4()
print('C4的name是:'+t.name)
print('C4的num是:'+ str(t.num) )

#为什么t.name不是C0,而是C3??

#如果把C4继承中的父类,C0去掉,那么C4的那么值又通过C2继承了C0的值‘‘C0’

从左到右,如果类中属性已有,不会被后面类中相同属性覆盖,也就是说C3有name属性了,C0也有,不会被C0重写。

不知道具体原因,但是可以看出,在继承父类属性时,同一属性只接收一次继承(如C3的name不会被C0的name覆盖),但父类中继承其他类的属性(如C2中继承的C0的name属性),会被同级别中其他父类的属性覆盖(C3的name属性把C2从C0中继承的name属性的内容覆盖了)。