歡迎您光臨本站 註冊首頁

python支持多繼承嗎

←手機掃碼閱讀     wooen @ 2020-06-21 , reply:0

大部分面向對象的編程語言(除了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類中的方法,所以說子類所繼承的父類中的方法,如果存在同名,前面的會“遮蔽”後面的即前面的直接父類優先級高於後面的。



[wooen ] python支持多繼承嗎已經有234次圍觀

http://coctec.com/docs/python/shhow-post-239308.html