最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python類繼承及super()函數(shù)使用說明

 更新時(shí)間:2022年11月24日 09:12:45   作者:waifdzdn  
這篇文章主要介紹了Python類繼承及super()函數(shù)使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python中單類繼承

Python是一門面向?qū)ο蟮木幊陶Z言,支持類繼承。

新的類稱為子類(Subclass),被繼承的類稱為父類、基類或者超類。子類繼承父類后,就擁有父類的所有特性。

類繼承的簡單例子:

普通類方法繼承

class Fruit():
? ? def color(self):
? ? ? ? print("colorful")

class Apple(Fruit):
? ? pass

class Orange(Fruit):
? ? pass

apple = Apple()
orange = Orange()
apple.color()
orange.color()

# 輸出
# colorful
# colorful

這里Fruit為父類,Apple和Orange為子類,子類繼承了父類的特性,因此Apple和Orange也擁有Color方法。

子類除了可以繼承父類的方法,還可以覆蓋父類的方法:

class Fruit():
? ? def color(self):
? ? ? ? print("colorful")

class Apple(Fruit):
? ? def color(self):
? ? ? ? print("red")

class Orange(Fruit):
? ? def color(self):
? ? ? ? print("orange")

apple = Apple()
orange = Orange()
apple.color()
orange.color()

# 輸出
# red
# orange

子類可以在繼承父類方法的同時(shí),對方法進(jìn)行重構(gòu)。

這樣一來,子類的方法既包含父類方法的特性,同時(shí)也包含子類自己的特性:

class Fruit():
? ? def color(self):
? ? ? ? print("Fruits are colorful")

class Apple(Fruit):
? ? def color(self):
? ? ? ? super().color()
? ? ? ? print("Apple is red")

class Orange(Fruit):
? ? def color(self):
? ? ? ? super().color()
? ? ? ? print("Orange is orange")

apple = Apple()
orange = Orange()
apple.color()
orange.color()

# 輸出
# Fruits are colorful
# Apple is red
# Fruits are colorful
# Orange is orange

初始化函數(shù)繼承

如果我們需要給類傳入?yún)?shù),需要使用初始化函數(shù)。如果所有子類中部分參數(shù)是相同的,那么可以在父類的初始化函數(shù)中定義這些參數(shù),然后子類繼承父類的初始化函數(shù),這樣所有子類就可共享這些參數(shù),而不需要在每個(gè)子類中單獨(dú)定義。

初始化函數(shù)的繼承:

class Fruit():
? ? def __init__(self, color, shape):
? ? ? ? self.color = color
? ? ? ? self.shape = shape

class Apple(Fruit):
? ? def __init__(self, color, shape, taste):
? ? ? ? Fruit.__init__(self, color, shape) # 等價(jià)于super().__init__(color, shape)
? ? ? ? self.taste = taste
? ??
? ? def feature(self):
? ? ? ? print("Apple's color is {}, shape is {} and taste {}".format(
? ? ? ? ? ? self.color, self.shape, self.taste))

class Orange(Fruit):
? ? def __init__(self, color, shape, taste):
? ? ? ? Fruit.__init__(self, color, shape)
? ? ? ? self.taste = taste
? ??
? ? def feature(self):
? ? ? ? print("Orange's color is {}, shape is {} and taste {}".format(
? ? ? ? ? ? self.color, self.shape, self.taste))

apple = Apple("red", "square", "sour")
orange = Orange("orange", "round", "sweet")
apple.feature()
orange.feature()

# 輸出
# Apple's color is red, shape is square and taste sour
# Orange's color is orange, shape is round and taste sweet

Python中多類繼承

在單類繼承中,super()函數(shù)用于指向要繼承的父類,且不需要顯式的寫出父類名稱。

但是在多類繼承中,會(huì)涉及到查找順序(MRO)、鉆石繼承等問題。

MRO 是類的方法解析順序表, 也就是繼承父類方法時(shí)的順序表。

鉆石繼承

? ? A
? ?/ \
? B ? C
? ?\ /
? ? D

如圖所示,A是父類,B和C繼承A,D繼承B和C。

下面舉例說明鉆石繼承的繼承順序

class Plant():
? ? def __init__(self):
? ? ? ? print("Enter plant")
? ? ? ? print("Leave plant")

class Fruit(Plant):
? ? def __init__(self):
? ? ? ? print("Enter Fruit")
? ? ? ? super().__init__()
? ? ? ? print("Leave Fruit")

class Vegetable(Plant):
? ? def __init__(self):
? ? ? ? print("Enter vegetable")
? ? ? ? super().__init__()
? ? ? ? print("Leave vegetable")

class Tomato(Fruit, Vegetable):
? ? def __init__(self):
? ? ? ? print("Enter Tomato")
? ? ? ? super().__init__()
? ? ? ? print("Leave Tomato")

tomato = Tomato()
print(Tomato.__mro__)


# 輸出
# Enter Tomato
# Enter Fruit
# Enter vegetable
# Enter plant
# Leave plant
# Leave vegetable
# Leave Fruit
# Leave Tomato
# (<class '__main__.Tomato'>, <class '__main__.Fruit'>, <class '__main__.Vegetable'>, <class '__main__.Plant'>, <class 'object'>)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python語言的優(yōu)勢是什么

    python語言的優(yōu)勢是什么

    這篇文章主要介紹了python語言的優(yōu)勢是什么,從各個(gè)方面做了分析,需要的朋友們可以參考下
    2020-06-06
  • django美化后臺(tái)django-suit的安裝配置操作

    django美化后臺(tái)django-suit的安裝配置操作

    這篇文章主要介紹了django美化后臺(tái)django-suit的安裝配置操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 詳解Python中的null是什么

    詳解Python中的null是什么

    這篇文章主要介紹了Python中的null是什么,Python中其實(shí)沒有null這個(gè)詞,取而代之的是None對象,即特殊類型NoneType,代表空、沒有,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Python的動(dòng)態(tài)重新封裝的教程

    Python的動(dòng)態(tài)重新封裝的教程

    這篇文章主要介紹了Python的動(dòng)態(tài)重新封裝的教程,本文來自于IBM的官方開發(fā)者文檔,需要的朋友可以參考下
    2015-04-04
  • Python數(shù)據(jù)分析之雙色球統(tǒng)計(jì)兩個(gè)紅和藍(lán)球哪組合比例高的方法

    Python數(shù)據(jù)分析之雙色球統(tǒng)計(jì)兩個(gè)紅和藍(lán)球哪組合比例高的方法

    這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球統(tǒng)計(jì)兩個(gè)紅和藍(lán)球哪組合比例高的方法,涉及Python數(shù)值運(yùn)算及圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 詳解python讀寫json文件

    詳解python讀寫json文件

    這篇文章主要為大家介紹了python讀寫json文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 通過pycharm使用git的步驟(圖文詳解)

    通過pycharm使用git的步驟(圖文詳解)

    這篇文章主要介紹了通過pycharm使用git的步驟(圖文詳解),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線

    Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線

    這篇文章主要為大家介紹了Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • python中使用websocket方法實(shí)例詳解

    python中使用websocket方法實(shí)例詳解

    WebSocket是一種網(wǎng)絡(luò)通信協(xié)議,它在單個(gè)TCP連接上提供全雙工的通信信道,本文我們將探討如何在Python中使用WebSocket實(shí)現(xiàn)實(shí)時(shí)通信,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Python中變量的輸入輸出實(shí)例代碼詳解

    Python中變量的輸入輸出實(shí)例代碼詳解

    這篇文章主要介紹了Python中變量的輸入輸出問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07

最新評論

中西区| 滦南县| 岢岚县| 烟台市| 潍坊市| 桑植县| 贞丰县| 台江县| 六盘水市| 会理县| 基隆市| 乌拉特前旗| 凤台县| 探索| 呼玛县| 玉环县| 滁州市| 石林| 西乌| 临漳县| 孝感市| 巩义市| 明水县| 年辖:市辖区| 错那县| 太康县| 武威市| 崇文区| 拉萨市| 广灵县| 元朗区| 东乡| 探索| 井陉县| 湄潭县| 石狮市| 天门市| 江口县| 左云县| 沧源| 汕尾市|