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

python中super().__init__()的用法

 更新時間:2023年03月28日 16:28:09   作者:BeanInJ  
python里的super().__init__()有什么作用?很多同學沒有弄清楚。super()用來調用父類(基類)的方法,__init__()是類的構造方法,感興趣的小伙伴可以參考閱讀本文

super().__ init__ ()有什么用?

super().__init__() 、 super(B,self).__init__()

1、分別理解super()和 __ init __()

1.1、super()

需要注意的是python2、3的super寫法稍有不同。

1.2、__ init __()

__init__() 是python中的構造函數(shù),在創(chuàng)建對象的時"自動調用"。

定義類時可以不寫init方法,系統(tǒng)會默認創(chuàng)建,
你也可以寫一個,讓你的類在創(chuàng)建時完成一些“動作”。

1.3、super(). __ init __()

如果子類B和父類A,都寫了init方法,
那么A的init方法就會被B覆蓋。想調用A的init方法需要用super去調用。

當然,在B內(nèi)部,除了用super調用父類的方法,也可以用父類名調用,例:

class B(A):
    def __init__(self):
        A.__init__(self)
        print("B init")
1.3.1、關于“覆蓋”的疑問

有人可能會誤解“覆蓋”的意思,認為“覆蓋”了就是沒有,為什么還能通過super調用?
覆蓋了并不是沒有了,A的方法終都還在,但需要在B內(nèi)部用super調用。

例:
A里寫了一個方法hi(), B繼承自A, B里也寫了一個方法hi()。
B的對象在外部調用hi(), 就只能調用B里面寫的這個hi()。
想通過B調用A的hi(),只能在B內(nèi)部用super().hi()調用。
class A:
    def hi(self):
        print("A hi")

class B(A):
    def hello(self):
        print("B hello")
        
b = B()
b.hi()       # B里沒有寫hi(),這里調用的是繼承自A的hi()

------------------------------------------------------------------
class A:
    def hi(self):
        print("A hi")

class B(A):
    def hi(self):
        print("B hi")
        
b = B()
b.hi()    # 這里調用的就是B自己的hi()
------------------------------------------------------------------
class A:
    def hi(self):
        print("A hi")

class B(A):
    def hi(self):
        super().hi()         # 通過super調用父類A的hi()
        print("B hi")
        
b = B()
b.hi()    # 這里調用的就是B里面的hi()

2、super() 在 python2、3中的區(qū)別

Python3.x 和 Python2.x 的一個區(qū)別: Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx :

例:
python3 直接寫成 : super().__init__()
python2 必須寫成 :super(本類名,self).__init__()

 Python3.x 實例:

class A:
     def add(self, x):
         y = x+1
         print(y)
class B(A):
    def add(self, x):
        super().add(x)
b = B()
b.add(2)  # 3

Python2.x 實例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class A(object):   # Python2.x 記得繼承 object
    def add(self, x):
         y = x+1
         print(y)
class B(A):
    def add(self, x):
        super(B, self).add(x)
b = B()
b.add(2)  # 3

3、關于繼承順序

最底層:先寫一個父類A

class A:
    def __init__(self):
        print('A')

第二層:讓 B、C、D 繼承自A

class B(A):
    def __init__(self):
        print('B')
        super().__init__()

class C(A):
    def __init__(self):
        print('C')
        super().__init__()

class D(A):
    def __init__(self):
        print('D')
        super().__init__()

第三層: E、F、G 繼承

class E(B, C):
    def __init__(self):
        print('E')
        super().__init__()

class F(C, D):
    def __init__(self):
        print('F')
        super().__init__()

class G(E, F):
    def __init__(self):
        print('G')
        super().__init__()

看看G的繼承順序

我們發(fā)現(xiàn)G繼承自E, F是并列的,初始化的時候不會先把E初始化完畢才初始化F。

4、從多個實例中對比super(python3)

下面是三種不同的繼承、調用,對比他們的區(qū)別,搞清楚super().__init__()的用途。

4.1、實例

子類名稱繼承內(nèi)容
Puple繼承所有
Puple_Init繼承,但覆蓋了init方法
Puple_Super繼承,但覆蓋了init方法,并在init里面添加了super().__init__()

 4.2、運行結果與對比

4.3、完整代碼

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

相關文章

  • pip安裝tensorflow的坑的解決

    pip安裝tensorflow的坑的解決

    這篇文章主要介紹了pip安裝tensorflow的坑的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Python天氣語音播報小助手

    Python天氣語音播報小助手

    馬上就要迎來國慶小長假了,激不激動,興不興奮!那今年國慶:天氣怎么樣?能不能出門逛街?能不能出去旅游?旅游出門就要挑個好的天氣!下雨天哪兒哪兒都不舒服。今天小編帶大家寫一款Python天氣語音播報小助手
    2021-09-09
  • vscode autopep8無法格式化python代碼問題解決

    vscode autopep8無法格式化python代碼問題解決

    這篇文章主要為大家介紹了vscode autopep8無法格式化python代碼問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Python內(nèi)置方法實現(xiàn)字符串的秘鑰加解密(推薦)

    Python內(nèi)置方法實現(xiàn)字符串的秘鑰加解密(推薦)

    在Python中實現(xiàn)AES算法需要借助的第三方庫Crypto,其在各個操作系統(tǒng)上的安裝方法有些許復雜,所以對于簡單的使用有點殺雞用牛刀的意思。這篇文章主要介紹了利用Python內(nèi)置方法實現(xiàn)字符串的秘鑰加解密,需要的朋友可以參考下
    2019-12-12
  • Python3將jpg轉為pdf文件的方法示例

    Python3將jpg轉為pdf文件的方法示例

    這篇文章主要介紹了Python3將jpg轉為pdf文件的方法,結合完整實例形式分析了Python3針對jpg轉pdf格式的文件讀寫、編碼裝換等相關操作技巧,需要的朋友可以參考下
    2019-12-12
  • python 實現(xiàn)二維字典的鍵值合并等函數(shù)

    python 實現(xiàn)二維字典的鍵值合并等函數(shù)

    今天小編就為大家分享一篇python 實現(xiàn)二維字典的鍵值合并等函數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Keras 實現(xiàn)加載預訓練模型并凍結網(wǎng)絡的層

    Keras 實現(xiàn)加載預訓練模型并凍結網(wǎng)絡的層

    這篇文章主要介紹了Keras 實現(xiàn)加載預訓練模型并凍結網(wǎng)絡的層,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 解析Pytorch中的torch.gather()函數(shù)

    解析Pytorch中的torch.gather()函數(shù)

    本文給大家介紹了Pytorch中的torch.gather()函數(shù),通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-11-11
  • Python中的集合類型知識講解

    Python中的集合類型知識講解

    這篇文章主要介紹了Python中的集合類型知識講解,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • 利用Python實現(xiàn)簡單的Excel統(tǒng)計函數(shù)

    利用Python實現(xiàn)簡單的Excel統(tǒng)計函數(shù)

    這篇文章主要介紹了利用Python實現(xiàn)簡單的Excel統(tǒng)計函數(shù),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07

最新評論

万州区| 塔河县| 黎川县| 永嘉县| 清新县| 金阳县| 黄平县| 盐津县| 神木县| 尼木县| 遂宁市| 柳江县| 临沭县| 巢湖市| 正定县| 离岛区| 大渡口区| 合阳县| 甘洛县| 内乡县| 拜泉县| 玉树县| 襄城县| 维西| 临夏县| 丰顺县| 分宜县| 肃南| 资中县| 康平县| 汕尾市| 宁夏| 芦山县| 巴林右旗| 南郑县| 平潭县| 麻江县| 大宁县| 佛山市| 孝义市| 章丘市|