python支援多繼承嗎
阿新 • • 發佈:2020-06-22
大部分面向物件的程式語言(除了C++)都只支援單繼承,而不支援多繼承,為什麼呢?因為多繼承不僅增加程式設計複雜度,而且容易導致莫名其妙的錯誤。
Python雖然語法上支援多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證程式設計思路更清晰,也可以避免不必要的麻煩。
當以一個子類有多個直接父類時,該子類會繼承得到所有父類的方法,但是如果其中有多個父類包含同名方法會發生什麼?此時排在前面的父類中的方法會“遮蔽”後面父類中的方法。
栗子如下:
#coding=utf-8 class Item: def info(self): print("Item中的方法",'這是一個商品') class Product: def info(self): print('Product中的方法','這是一個能賺錢的商品') class Computer(Item,Product): pass c = Computer() c.info()
控制檯列印如下:
Item中的方法,這是一個商品
解釋:控制檯列印的是Item類中的方法,所以說子類所繼承的父類中的方法,如果存在同名,前面的會“遮蔽”後面的即前面的直接父類優先順序高於後面的。
Python關於多繼承知識點擴充套件:
大部分面向物件的程式語言(除了C++)都只支援單繼承,而不支援多繼承,為什麼呢?因為多繼承不僅增加程式設計複雜度,而且容易導致莫名其妙的錯誤。
Python雖然語法上支援多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證程式設計思路更清晰,也可以避免不必要的麻煩。
當以一個子類有多個直接父類時,該子類會繼承得到所有父類的方法,但是如果其中有多個父類包含同名方法會發生什麼?此時排在前面的父類中的方法會“遮蔽”後面父類中的方法。
栗子如下:
#coding=utf-8 class Item: def info(self): print("Item中的方法",'這是一個商品') class Product: def info(self): print('Product中的方法','這是一個能賺錢的商品') class Computer(Item,Product): pass c = Computer() c.info()
解釋:控制檯列印的是Item類中的方法,所以說子類所繼承的父類中的方法,如果存在同名,前面的會“遮蔽”後面的即前面的直接父類優先順序高於後面的。
以上就是python支援多繼承嗎的詳細內容,更多關於python是否支援多繼承的資料請關注我們其它相關文章!