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

總結(jié)python實(shí)現(xiàn)父類調(diào)用兩種方法的不同

 更新時(shí)間:2017年01月15日 19:47:06   作者:hongweipeng  
最近在工作中實(shí)現(xiàn)父類調(diào)用的時(shí)候發(fā)現(xiàn)了一個(gè)錯(cuò)誤,然后通過分析實(shí)踐總結(jié)出來了,下面這篇文章主要給大家總結(jié)了python中實(shí)現(xiàn)父類調(diào)用兩種方法的不同之處,需要的朋友可以參考借鑒,下面來一起看看吧。

python中有兩種方法可以調(diào)用父類的方法:

super(Child, self).method(args)

 Parent.method(self, args)

我用其中的一種報(bào)了如下錯(cuò)誤:

找不到 classobj。當(dāng)我把調(diào)用改為 super(B, self).f(name) 就能正確運(yùn)行,且結(jié)果正確。

分析錯(cuò)誤

因?yàn)榛悰]有繼承 object , 在python中,一個(gè)可以這樣創(chuàng)建:

class A:
 pass

也可以這樣創(chuàng)建:

class A(object):
 pass

這兩者的區(qū)別就是:

這是老式類(前者)和新式類(后者)的區(qū)別。區(qū)別可以參考:https://docs.python.org/release/2.5.2/ref/node33.html

python3已經(jīng)把舊類型去掉了,也就是說已經(jīng)隱式繼承了object,所以,python3中寫不寫繼承object都是沒有區(qū)別的

兩種調(diào)用的區(qū)別

Parent.__init__(self) super(Child, self).__init__() 的區(qū)別是什么?

super 理解成父類也是理所當(dāng)然,python里其實(shí)指的是 MRO 中的下一個(gè)類!

super其實(shí)干了這件事,看這個(gè)答案:

def super(cls, inst):
 mro = inst.__class__.mro() # Always the most derived class
 return mro[mro.index(cls) + 1]

MRO 全稱 Method Resolution Order,它代表了類繼承的順序。

super 是用來解決多重繼承問題的,假設(shè)B C D 都是直接繼承class A

class E(B, C, D):
 def __init__(self):
  # code...

如果E類的構(gòu)造函數(shù)使用 super(E, self).__init__() 時(shí),A類的構(gòu)造函數(shù)會被執(zhí)行一次,而用另一種方法,A類的構(gòu)造函數(shù)會被執(zhí)行多次。

在 MRO 中,基類永遠(yuǎn)出現(xiàn)在派生類后面,如果有多個(gè)基類,基類的相對順序保持不變。

總結(jié)

個(gè)人覺得,復(fù)雜的繼承結(jié)構(gòu)是設(shè)計(jì)中不良的設(shè)計(jì),當(dāng)繼承結(jié)構(gòu)清晰后,兩個(gè)方法其實(shí)就沒什么區(qū)別了。以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助。

相關(guān)文章

  • Python 怎么定義計(jì)算N的階乘的函數(shù)

    Python 怎么定義計(jì)算N的階乘的函數(shù)

    這篇文章主要介紹了Python 怎么定義計(jì)算N的階乘的函數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python實(shí)現(xiàn)讀取字符串按列分配后按行輸出示例

    Python實(shí)現(xiàn)讀取字符串按列分配后按行輸出示例

    這篇文章主要介紹了Python實(shí)現(xiàn)讀取字符串按列分配后按行輸出,涉及Python針對字符串的遍歷、判斷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • Python?list?append方法之給列表追加元素

    Python?list?append方法之給列表追加元素

    這篇文章主要介紹了Python?list?append方法如何給列表追加元素,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python如何腳本過濾文件中的注釋

    Python如何腳本過濾文件中的注釋

    在本篇文章里小編給大家分享的是關(guān)于Python腳本過濾文件中的注釋方法以及實(shí)例,需要的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • python實(shí)現(xiàn)會員管理系統(tǒng)

    python實(shí)現(xiàn)會員管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)會員管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python使用TextRank算法提取關(guān)鍵詞

    Python使用TextRank算法提取關(guān)鍵詞

    textrank是在pagerank的基礎(chǔ)上提出來的。PageRank對于每個(gè)網(wǎng)頁頁面都給出一個(gè)正實(shí)數(shù),表示網(wǎng)頁的重要程度,PageRank值越高,表示網(wǎng)頁越重要,在互聯(lián)網(wǎng)搜索的排序中越可能被排在前面
    2022-12-12
  • Python中hash()函數(shù)之哈希值的奧秘詳解

    Python中hash()函數(shù)之哈希值的奧秘詳解

    hash()是Python 中的一個(gè)內(nèi)置函數(shù),用于計(jì)算對象的哈希值,哈希值是一個(gè)整數(shù),用于唯一標(biāo)識對象,下面這篇文章主要給大家介紹了關(guān)于Python中hash()函數(shù)之哈希值奧秘的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • 解決Python保存文件名太長OSError: [Errno 36] File name too lon

    解決Python保存文件名太長OSError: [Errno 36] File 

    這篇文章主要介紹了解決Python保存文件名太長OSError: [Errno 36] File name too lon問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 關(guān)于Tensorflow使用CPU報(bào)錯(cuò)的解決方式

    關(guān)于Tensorflow使用CPU報(bào)錯(cuò)的解決方式

    今天小編就為大家分享一篇關(guān)于Tensorflow使用CPU報(bào)錯(cuò)的解決方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python如何在pygame中設(shè)置字體并顯示中文詳解

    python如何在pygame中設(shè)置字體并顯示中文詳解

    再簡單的游戲界面中均涉及文字處理,下面這篇文章主要給大家介紹了關(guān)于python如何在pygame中設(shè)置字體并顯示中文的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評論