91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中關于super()函數的問題怎么解決

發布時間:2022-08-11 11:32:03 來源:億速云 閱讀:134 作者:iii 欄目:開發技術

這篇“python中關于super()函數的問題怎么解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python中關于super()函數的問題怎么解決”文章吧。

案例一:運行下面的代碼結果是什么?

class Person:
    def run(self):
        print('studying')

class Person1:
    def run(self):
        print('working')

class Person2:
    def run(self):
        print('playing')

class Person3(Person,Person1,Person2):

    def run(self):
        super().run1()

p=Person3()
p.run()

執行結果:

AttributeError: ‘super’ object has no attribute ‘run1’

注意:

1、一個類繼承多個類時,如果父類中沒有提供該方法,類會通過__mro__屬性一直向上搜索,如果直到object還沒有搜索到該方法,那么將會引發AttributeError異常

案例二:運行下面的代碼結果是什么?

class Person:
    def run(self):
        print('studying')

class Person1:
    def run(self):
        print('working')

class Person2:
    def run(self):
        print('playing')

class Person3(Person,Person1,Person2):

    def run(self):
        super(Person1,self).run()

p=Person3()
p.run()

輸出結果為:playing;而不是working

注意:

1、super()函數的使用。
使用super()函數時,可以通過super(類名,self)來指定對哪個對象以哪個類為起點向上搜索父類中的方法。
例如:super(Person1,self).run():表示以Person1類為起點,向上搜索self(Person3的對象)的run方法。
Person1向上搜索到了<class &lsquo;main.Person2&rsquo;>,所以才會輸出playing

2、print(Person3.mro)的繼承順序為:(<class &lsquo;main.Person3&rsquo;>, <class &lsquo;main.Person&rsquo;>, <class &lsquo;main.Person1&rsquo;>, <class &lsquo;main.Person2&rsquo;>, <class &lsquo;object&rsquo;>)

案例三、更復雜些的繼承,和上面的同理

class A:
    def who(self):
        print('A', end='')

class B(A):
    def who(self):
        super(B, self).who()
        print('B', end='')

class C(A):
    def who(self):
        super(C, self).who()
        print('C', end='')

class D(B, C):
    def who(self):
        super(D, self).who()
        print('D', end='')

item = D()
item.who()


print(D.__mro__)

輸出結果:

ACBD
(<class &lsquo;main.D&rsquo;>, <class &lsquo;main.B&rsquo;>, <class &lsquo;main.C&rsquo;>, <class &lsquo;main.A&rsquo;>, <class &lsquo;object&rsquo;>)

以上就是關于“python中關于super()函數的問題怎么解決”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊宁市| 西峡县| 远安县| 屯留县| 名山县| 桃园市| 西青区| 霍州市| 金湖县| 丹东市| 固安县| 壤塘县| 高青县| 汾西县| 玛多县| 犍为县| 廉江市| 商南县| 涿州市| 闽清县| 嘉禾县| 林芝县| 客服| 秀山| 临漳县| 津南区| 绥江县| 德昌县| 枣阳市| 河曲县| 南投县| 邵阳市| 阜宁县| 色达县| 武宁县| 涞源县| 唐河县| 房产| 武陟县| 武邑县| 封丘县|