大部分面向對象的編程語言(除了C++)都只支持單繼承,而不支持多繼承,為什么呢?因為多繼承不僅增加編程復雜度,而且容易導致莫名其妙的錯誤。
Python雖然語法上支持多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證編程思路更清晰,也可以避免不必要的麻煩。
當以一個子類有多個直接父類時,該子類會繼承得到所有父類的方法,但是如果其中有多個父類包含同名方法會發生什么?此時排在前面的父類中的方法會“遮蔽”后面父類中的方法。
栗子如下:
1 #coding=utf-8 2 class Item: 3 def info(self): 4 print("Item中的方法",'這是一個商品') 5 6 class Product: 7 def info(self): 8 print('Product中的方法','這是一個能賺錢的商品') 9 10 class Computer(Item,Product): 11 pass 12 13 c = Computer() 14 c.info()
控制台打印如下:
解釋:控制台打印的是Item類中的方法,所以說子類所繼承的父類中的方法,如果存在同名,前面的會“遮蔽”后面的即前面的直接父類優先級高於后面的。