大部分面向?qū)ο蟮木幊陶Z言(除了C++)都只支持單繼承,而不支持多繼承,為什么呢?因為多繼承不僅增加編程復(fù)雜度,而且容易導(dǎo)致莫名其妙的錯誤。
Python雖然語法上支持多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證編程思路更清晰,也可以避免不必要的麻煩。
當(dāng)以一個子類有多個直接父類時,該子類會繼承得到所有父類的方法,但是如果其中有多個父類包含同名方法會發(fā)生什么?此時排在前面的父類中的方法會“遮蔽”后面父類中的方法。
栗子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#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類中的方法,所以說子類所繼承的父類中的方法,如果存在同名,前面的會“遮蔽”后面的即前面的直接父類優(yōu)先級高于后面的。
Python關(guān)于多繼承知識點擴展:
大部分面向?qū)ο蟮木幊陶Z言(除了C++)都只支持單繼承,而不支持多繼承,為什么呢?因為多繼承不僅增加編程復(fù)雜度,而且容易導(dǎo)致莫名其妙的錯誤。
Python雖然語法上支持多繼承,但是卻不推薦使用多繼承,而是推薦使用單繼承,這樣可以保證編程思路更清晰,也可以避免不必要的麻煩。
當(dāng)以一個子類有多個直接父類時,該子類會繼承得到所有父類的方法,但是如果其中有多個父類包含同名方法會發(fā)生什么?此時排在前面的父類中的方法會“遮蔽”后面父類中的方法。
栗子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#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類中的方法,所以說子類所繼承的父類中的方法,如果存在同名,前面的會“遮蔽”后面的即前面的直接父類優(yōu)先級高于后面的。
以上就是python支持多繼承嗎的詳細(xì)內(nèi)容,更多關(guān)于python是否支持多繼承的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://www.py.cn/faq/python/12505.html