欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中的super如何使用

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

技術(shù)背景

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

案例測試

通過設(shè)計這樣一個案例,我們可以明確super的前后邏輯關(guān)系:先定義一個父類initial,在這個父類中有參數(shù)值param和函數(shù)func,然后用子類new來繼承父類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)的打印語句,是在super之后才輸出的,這說明了,super函數(shù)是在執(zhí)行父類的初始化操作。那么如果沒有執(zhí)行supernew子類對initial父類的繼承體現(xiàn)在哪里呢?答案就是父類的成員函數(shù),比如這樣的一個案例:

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ù),那么得到的結(jié)果如下:

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

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

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

總結(jié)概要

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

版權(quán)聲明

本文首發(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

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

相關(guān)文章

  • 詳解Python中使用base64模塊來處理base64編碼的方法

    詳解Python中使用base64模塊來處理base64編碼的方法

    8bit的bytecode經(jīng)常會被用base64編碼格式保存,Python中自帶base64模塊對base64提供支持,這里我們就來詳解Python中使用base64模塊來處理base64編碼的方法,需要的朋友可以參考下
    2016-07-07
  • 詳解python中的IO操作方法

    詳解python中的IO操作方法

    這篇文章主要介紹了Python實現(xiàn)IO操作的示例,是python入門必會得知識點,將幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2022-01-01
  • python通過Seq2Seq實現(xiàn)閑聊機器人

    python通過Seq2Seq實現(xiàn)閑聊機器人

    這篇文章主要介紹了python通過Seq2Seq實現(xiàn)閑聊機器人,文中有非常詳細的代碼示例,對正在學(xué)習python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • Flask之請求鉤子的實現(xiàn)

    Flask之請求鉤子的實現(xiàn)

    這篇文章主要介紹了Flask之請求鉤子的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2018-12-12
  • Python連接Oracle之環(huán)境配置、實例代碼及報錯解決方法詳解

    Python連接Oracle之環(huán)境配置、實例代碼及報錯解決方法詳解

    這篇文章主要介紹了Python連接Oracle之環(huán)境配置、實例代碼及報錯解決方法詳解,需要的朋友可以參考下
    2020-02-02
  • python 將大文件切分為多個小文件的實例

    python 將大文件切分為多個小文件的實例

    今天小編就為大家分享一篇python 將大文件切分為多個小文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • WxPython實現(xiàn)無邊框界面

    WxPython實現(xiàn)無邊框界面

    這篇文章主要為大家詳細介紹了WxPython實現(xiàn)無邊框界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python循環(huán)語句中else的用法總結(jié)

    Python循環(huán)語句中else的用法總結(jié)

    這篇文章給大家整理了關(guān)于Python中循環(huán)語句中else的用法,包括常規(guī)的 if else 用法、if else 快捷用法、與 for 關(guān)鍵字一起用、與 while 關(guān)鍵字一起用以及與 try except 一起用的用法總結(jié),有需要的朋友們可以參考借鑒。
    2016-09-09
  • 使用pyqt5 tablewidget 單元格設(shè)置正則表達式

    使用pyqt5 tablewidget 單元格設(shè)置正則表達式

    今天小編就為大家分享一篇使用pyqt5 tablewidget 單元格設(shè)置正則表達式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python shell根據(jù)ip獲取主機名代碼示例

    python shell根據(jù)ip獲取主機名代碼示例

    這篇文章主要介紹了python shell根據(jù)ip獲取主機名代碼示例,涉及用socket模塊和shell中hostname命令獲取等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11

最新評論