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

python中的super如何使用

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

技術背景

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

案例測試

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

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

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

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

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

結果分析

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

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()

其實就是刪掉了子類中重載的成員函數,那么得到的結果如下:

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

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

也正是因為只有執(zhí)行了super才能初始化父類中的成員變量,因此如果在super之前是無法訪問父類的成員變量的。

總結概要

本文通過一個python的實際案例的設計,來講解python面向對象的技術——類的繼承中必用的super函數的邏輯。其實我們可以把python中類的繼承理解成這樣的一個過程:當我們在括號中明確了父類時,其實已經引用了父類的成員函數,但是并沒有執(zhí)行父類的初始化函數。在執(zhí)行子類的初始化函數的同時,會檢查是否重載了父類的成員函數,如果重載則會直接覆蓋。而只有在執(zhí)行了super之后,才相當于執(zhí)行了父類的初始化函數,此時才可以訪問父類的成員變量。

版權聲明

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

作者ID:DechinPhy

更多原著文章請參考:https://www.cnblogs.com/dechinphy/

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

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

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

相關文章

  • Python結合PyWebView庫打造跨平臺桌面應用

    Python結合PyWebView庫打造跨平臺桌面應用

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

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

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

    示例詳解python中的排序

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

    解決Python報錯:ValueError:operands?could?not?be?broadcast?t

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

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

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

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

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

    Python異常處理與反射相關問題總結

    今天給大家?guī)淼氖顷P于Python的相關知識,文章圍繞著Python異常處理與反射展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • python 使用uiautomator2連接手機設備的實現

    python 使用uiautomator2連接手機設備的實現

    這篇文章主要介紹了python 使用uiautomator2連接手機設備的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • tensorboard 可視化之localhost:6006不顯示的解決方案

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

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

    python 安裝impala包步驟

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

最新評論

巴东县| 佛学| 宁乡县| 石林| 延长县| 陇南市| 剑川县| 封开县| 台前县| 道孚县| 泗阳县| 施秉县| 临清市| 揭东县| 兴义市| 华安县| 铜川市| 朔州市| 旬阳县| 洪江市| 鄂托克前旗| 灌阳县| 云霄县| 淮北市| 莱州市| 正定县| 来宾市| 遂宁市| 青河县| 陆良县| 巨鹿县| 武宁县| 巫溪县| 西贡区| 浦县| 临漳县| 石狮市| 濮阳县| 阿克陶县| 新丰县| 改则县|