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)于多繼承知識點擴展:
大部分面向?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支持多繼承嗎的詳細內(nèi)容,更多關(guān)于python是否支持多繼承的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. XML入門的常見問題(四)2. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁3. WMLScript的語法基礎(chǔ)4. ASP中if語句、select 、while循環(huán)的使用方法5. xml中的空格之完全解說6. html小技巧之td,div標(biāo)簽里內(nèi)容不換行7. ASP中解決“對象關(guān)閉時,不允許操作?!钡脑幃悊栴}……8. ASP動態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗分享9. msxml3.dll 錯誤 800c0019 系統(tǒng)錯誤:-2146697191解決方法10. 解決ASP中http狀態(tài)跳轉(zhuǎn)返回錯誤頁的問題
