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

python中的super如何使用

 更新時(shí)間:2022年03月23日 08:15:51   作者:Dechin的博客  
這篇文章主要介紹了python中的super,python中的super,名為超類,可以簡(jiǎn)單的理解為執(zhí)行父類的__init__函數(shù),本文就著重看下super的具體作用,需要的朋友可以參考下

技術(shù)背景

python中的super,名為超類,可以簡(jiǎn)單的理解為執(zhí)行父類的__init__函數(shù)。由于在python中不論是一對(duì)一的繼承,還是一子類繼承多個(gè)父類,都會(huì)涉及到執(zhí)行的先后順序的問(wèn)題。那么本文就著重看下super的具體作用。

案例測(cè)試

通過(guò)設(shè)計(jì)這樣一個(gè)案例,我們可以明確super的前后邏輯關(guān)系:先定義一個(gè)父類initial,在這個(gè)父類中有參數(shù)值param和函數(shù)func,然后用子類new來(lái)繼承父類initial。繼承之后,在子類的__init__函數(shù)中super執(zhí)行的前后去打印參數(shù)值param和函數(shù)func的返回值,相關(guān)代碼如下所示:

# 定義父類
class initial(object):
    def __init__(self):
        print ('This print is from initial object')
        # 定義父類參數(shù)
        self.param = 3

    # 定義父類函數(shù)
    def func(self):
        return 1
# 定義子類
class new(initial):
        print ('This print is from new object')
        # 打印子類函數(shù)值
        print (self.func())
        # 執(zhí)行父類初始化函數(shù)
        super(new, self).__init__()
        # 打印父類參數(shù)值
        print(self.param)
        self.param = 4
    # 定義子類函數(shù)
        return 2
if __name__ == '__main__':
    new()

代碼的執(zhí)行結(jié)果如下所示:

This print is from new object
2
This print is from initial object
3

結(jié)果分析

首先我們注意到,父類initial中的__init__函數(shù)內(nèi)的打印語(yǔ)句,是在super之后才輸出的,這說(shuō)明了,super函數(shù)是在執(zhí)行父類的初始化操作。那么如果沒(méi)有執(zhí)行super,new子類對(duì)initial父類的繼承體現(xiàn)在哪里呢?答案就是父類的成員函數(shù),比如這樣的一個(gè)案例:

class initial(object):
    def __init__(self):
        print ('This print is from initial object')
        self.param = 3
    def func(self):
        return 1
class new(initial):
    def __init__(self):
        print ('This print is from new object')
        print (self.func())
        super(new, self).__init__()
        print(self.param)
        self.param = 4

if __name__ == '__main__':
    new()

其實(shí)就是刪掉了子類中重載的成員函數(shù),那么得到的結(jié)果如下:

This print is from new object
1
This print is from initial object
3

可以發(fā)現(xiàn)在執(zhí)行super之前就可以打印父類的func函數(shù)的函數(shù)值。所以python中繼承的邏輯是這樣的:

也正是因?yàn)橹挥袌?zhí)行了super才能初始化父類中的成員變量,因此如果在super之前是無(wú)法訪問(wèn)父類的成員變量的。

總結(jié)概要

本文通過(guò)一個(gè)python的實(shí)際案例的設(shè)計(jì),來(lái)講解python面向?qū)ο蟮募夹g(shù)——類的繼承中必用的super函數(shù)的邏輯。其實(shí)我們可以把python中類的繼承理解成這樣的一個(gè)過(guò)程:當(dāng)我們?cè)诶ㄌ?hào)中明確了父類時(shí),其實(shí)已經(jīng)引用了父類的成員函數(shù),但是并沒(méi)有執(zhí)行父類的初始化函數(shù)。在執(zhí)行子類的初始化函數(shù)的同時(shí),會(huì)檢查是否重載了父類的成員函數(shù),如果重載則會(huì)直接覆蓋。而只有在執(zhí)行了super之后,才相當(dāng)于執(zhí)行了父類的初始化函數(shù),此時(shí)才可以訪問(wèn)父類的成員變量。

版權(quán)聲明

本文首發(fā)鏈接為:https://www.cnblogs.com/dechinphy/p/super.html

作者ID:DechinPhy

更多原著文章請(qǐng)參考:https://www.cnblogs.com/dechinphy/

打賞專用鏈接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

騰訊云專欄同步:https://cloud.tencent.com/developer/column/91958

到此這篇關(guān)于python中的super是什么?的文章就介紹到這了,更多相關(guān)python中的super內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python結(jié)合PyWebView庫(kù)打造跨平臺(tái)桌面應(yīng)用

    Python結(jié)合PyWebView庫(kù)打造跨平臺(tái)桌面應(yīng)用

    隨著Web技術(shù)的發(fā)展,將HTML/CSS/JavaScript與Python結(jié)合構(gòu)建桌面應(yīng)用成為可能,本文將系統(tǒng)講解如何使用PyWebView庫(kù)實(shí)現(xiàn)這一創(chuàng)新方案,希望對(duì)大家有一定的幫助
    2025-04-04
  • Python編程之順序執(zhí)行與程序的主入口詳解

    Python編程之順序執(zhí)行與程序的主入口詳解

    程序從程序入口進(jìn)入,到程序執(zhí)行結(jié)束,大體是按照順序結(jié)構(gòu)執(zhí)行語(yǔ)句、函數(shù)或代碼塊,掌握程序的結(jié)構(gòu),有利于把握程序的主體框架,下面這篇文章主要給大家介紹了關(guān)于Python編程之順序執(zhí)行與程序的主入口的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 示例詳解python中的排序

    示例詳解python中的排序

    本文詳細(xì)介紹了如何使用Python實(shí)現(xiàn)兩組數(shù)據(jù)的縱向排序,包括開(kāi)發(fā)思想、開(kāi)發(fā)流程和代碼示例,感興趣的朋友一起看看吧
    2024-12-12
  • 解決Python報(bào)錯(cuò):ValueError:operands?could?not?be?broadcast?together?with?shapes

    解決Python報(bào)錯(cuò):ValueError:operands?could?not?be?broadcast?t

    這篇文章主要給大家介紹了關(guān)于解決Python報(bào)錯(cuò):ValueError:operands?could?not?be?broadcast?together?with?shapes的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Python繪制正二十面體圖形示例

    Python繪制正二十面體圖形示例

    正二十面體由20個(gè)小的正三角形面組成,每個(gè)頂點(diǎn)周?chē)?5?個(gè)頂點(diǎn),下面這篇文章主要給大家介紹了關(guān)于Python繪制正二十面體圖形的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • OpenCV圖像處理之圖像的二值化解讀

    OpenCV圖像處理之圖像的二值化解讀

    這篇文章主要介紹了OpenCV圖像處理之圖像的二值化解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python異常處理與反射相關(guān)問(wèn)題總結(jié)

    Python異常處理與反射相關(guān)問(wèn)題總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python異常處理與反射展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • python 使用uiautomator2連接手機(jī)設(shè)備的實(shí)現(xiàn)

    python 使用uiautomator2連接手機(jī)設(shè)備的實(shí)現(xiàn)

    這篇文章主要介紹了python 使用uiautomator2連接手機(jī)設(shè)備的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • tensorboard 可視化之localhost:6006不顯示的解決方案

    tensorboard 可視化之localhost:6006不顯示的解決方案

    這篇文章主要介紹了tensorboard 可視化之localhost:6006不顯示的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python 安裝impala包步驟

    python 安裝impala包步驟

    這篇文章主要介紹了python 安裝impala包步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03

最新評(píng)論

绍兴县| 西平县| 论坛| 射洪县| 海晏县| 青河县| 蒲城县| 子洲县| 若尔盖县| 论坛| 古浪县| 焦作市| 高唐县| 金溪县| 太仓市| 区。| 陆川县| 沅江市| 凤山县| 石门县| 忻州市| 军事| 区。| 武城县| 闵行区| 清徐县| 马尔康县| 泉州市| 陇南市| 开鲁县| 万盛区| 阿拉尔市| 宜黄县| 嵩明县| 武川县| 淄博市| 华阴市| 衡水市| 安溪县| 平远县| 土默特左旗|