python支持多繼承嗎
大部分面向?qū)ο蟮木幊陶Z言(除了C++)都只支持單繼承,而不支持多繼承,為什么呢?因為多繼承不僅增加編程復(fù)雜度,而且容易導(dǎo)致莫名其妙的錯誤。
Python雖然語法上支持多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證編程思路更清晰,也可以避免不必要的麻煩。
當(dāng)以一個子類有多個直接父類時,該子類會繼承得到所有父類的方法,但是如果其中有多個父類包含同名方法會發(fā)生什么?此時排在前面的父類中的方法會“遮蔽”后面父類中的方法。
栗子如下:
#coding=utf-8class Item: def info(self): print('Item中的方法',’這是一個商品’) class Product: def info(self): print(’Product中的方法’,’這是一個能賺錢的商品’) class Computer(Item,Product): pass c = Computer()c.info()
控制臺打印如下:
Item中的方法,這是一個商品
解釋:控制臺打印的是Item類中的方法,所以說子類所繼承的父類中的方法,如果存在同名,前面的會“遮蔽”后面的即前面的直接父類優(yōu)先級高于后面的。
Python關(guān)于多繼承知識點擴(kuò)展:
大部分面向?qū)ο蟮木幊陶Z言(除了C++)都只支持單繼承,而不支持多繼承,為什么呢?因為多繼承不僅增加編程復(fù)雜度,而且容易導(dǎo)致莫名其妙的錯誤。
Python雖然語法上支持多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證編程思路更清晰,也可以避免不必要的麻煩。
當(dāng)以一個子類有多個直接父類時,該子類會繼承得到所有父類的方法,但是如果其中有多個父類包含同名方法會發(fā)生什么?此時排在前面的父類中的方法會“遮蔽”后面父類中的方法。
栗子如下:
#coding=utf-8class Item: def info(self): print('Item中的方法',’這是一個商品’)class Product: def info(self): print(’Product中的方法’,’這是一個能賺錢的商品’)class Computer(Item,Product): passc = Computer()c.info()
解釋:控制臺打印的是Item類中的方法,所以說子類所繼承的父類中的方法,如果存在同名,前面的會“遮蔽”后面的即前面的直接父類優(yōu)先級高于后面的。
以上就是python支持多繼承嗎的詳細(xì)內(nèi)容,更多關(guān)于python是否支持多繼承的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ASP.NET MVC獲取多級類別組合下的產(chǎn)品2. ASP.NET MVC實現(xiàn)橫向展示購物車3. ThinkPHP5 通過ajax插入圖片并實時顯示(完整代碼)4. Docker 容器健康檢查機制5. CSS3實現(xiàn)動態(tài)翻牌效果 仿百度貼吧3D翻牌一次動畫特效6. python使用openpyxl庫讀寫Excel表格的方法(增刪改查操作)7. python中asyncio異步編程學(xué)習(xí)8. python os.listdir()亂碼解決方案9. Python使用socket_TCP實現(xiàn)小文件下載功能10. ASP實現(xiàn)文件上傳的方法
