相關(guān)代碼1:classA(object):defshow(self):print('initA...')classB(A):defshow(self):super(B,self).show()print('initB...')classC(A):defshow(self):#super(C,self).show()print('initC...')classD(B,C):defshow(self):super(D,self).show()print('initD...')d=D()d.show()輸出的結(jié)果是:initC...initB...initD...這里想問的是為什么沒有經(jīng)過A,輸出initA...相關(guān)代碼2:classA(object):defshow(self):print('initA...')classB(A):defshow(self):super(B,self).show()print('initB...')classC(A):defshow(self):#super(C,self).show()print('initC...')classD(C,B):#繼承類和代碼1中的順序相反defshow(self):super(D,self).show()print('initD...')d=D()d.show()輸出的結(jié)果是:initC...initD...這里想問的是為什么B中的方法沒有被調(diào)用?還有的就是新式類的MRO算法采用廣度優(yōu)先搜索。在這里是怎么調(diào)用的?
關(guān)于Python的多繼承問題,為什么結(jié)果差異很大
阿晨1998
2019-05-11 09:45:46