python支持多繼承嗎
大部分面向?qū)ο蟮木幊陶Z(yǔ)言(除了C++)都只支持單繼承,而不支持多繼承,為什么呢?因?yàn)槎嗬^承不僅增加編程復(fù)雜度,而且容易導(dǎo)致莫名其妙的錯(cuò)誤。
Python雖然語(yǔ)法上支持多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證編程思路更清晰,也可以避免不必要的麻煩。
當(dāng)以一個(gè)子類有多個(gè)直接父類時(shí),該子類會(huì)繼承得到所有父類的方法,但是如果其中有多個(gè)父類包含同名方法會(huì)發(fā)生什么?此時(shí)排在前面的父類中的方法會(huì)“遮蔽”后面父類中的方法。
栗子如下:
#coding=utf-8 class Item: def info(self): print("Item中的方法",'這是一個(gè)商品') class Product: def info(self): print('Product中的方法','這是一個(gè)能賺錢(qián)的商品') class Computer(Item,Product): pass c = Computer() c.info()
控制臺(tái)打印如下:
Item中的方法,這是一個(gè)商品
解釋:控制臺(tái)打印的是Item類中的方法,所以說(shuō)子類所繼承的父類中的方法,如果存在同名,前面的會(huì)“遮蔽”后面的即前面的直接父類優(yōu)先級(jí)高于后面的。
Python關(guān)于多繼承知識(shí)點(diǎn)擴(kuò)展:
大部分面向?qū)ο蟮木幊陶Z(yǔ)言(除了C++)都只支持單繼承,而不支持多繼承,為什么呢?因?yàn)槎嗬^承不僅增加編程復(fù)雜度,而且容易導(dǎo)致莫名其妙的錯(cuò)誤。
Python雖然語(yǔ)法上支持多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證編程思路更清晰,也可以避免不必要的麻煩。
當(dāng)以一個(gè)子類有多個(gè)直接父類時(shí),該子類會(huì)繼承得到所有父類的方法,但是如果其中有多個(gè)父類包含同名方法會(huì)發(fā)生什么?此時(shí)排在前面的父類中的方法會(huì)“遮蔽”后面父類中的方法。
栗子如下:
#coding=utf-8 class Item: def info(self): print("Item中的方法",'這是一個(gè)商品') class Product: def info(self): print('Product中的方法','這是一個(gè)能賺錢(qián)的商品') class Computer(Item,Product): pass c = Computer() c.info()
解釋:控制臺(tái)打印的是Item類中的方法,所以說(shuō)子類所繼承的父類中的方法,如果存在同名,前面的會(huì)“遮蔽”后面的即前面的直接父類優(yōu)先級(jí)高于后面的。
以上就是python支持多繼承嗎的詳細(xì)內(nèi)容,更多關(guān)于python是否支持多繼承的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python使用回溯法子集樹(shù)模板解決爬樓梯問(wèn)題示例
這篇文章主要介紹了Python使用回溯法子集樹(shù)模板解決爬樓梯問(wèn)題,簡(jiǎn)單說(shuō)明了爬樓梯問(wèn)題并結(jié)合實(shí)例形式給出了Python回溯法子集樹(shù)模板解決爬樓梯問(wèn)題的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

Django ValuesQuerySet轉(zhuǎn)json方式

python實(shí)現(xiàn)一個(gè)函數(shù)版的名片管理系統(tǒng)過(guò)程解析

Python遞歸遍歷列表及輸出的實(shí)現(xiàn)方法

Python利用matplotlib實(shí)現(xiàn)制作動(dòng)態(tài)條形圖

解決python將xml格式文件轉(zhuǎn)換成txt文件的問(wèn)題(xml.etree方法)

詳解用Pytest+Allure生成漂亮的HTML圖形化測(cè)試報(bào)告