亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

海伦市| 福清市| 阿坝| 嘉义县| 台北市| 陆川县| 翁源县| 固阳县| 无棣县| 大同市| 吉木萨尔县| 随州市| 页游| 玉林市| 博野县| 洛阳市| 甘孜| 海盐县| 长寿区| 阳泉市| 绥芬河市| 清流县| 兴山县| 枝江市| 江永县| 松潘县| 元朗区| 波密县| 周至县| 綦江县| 淳安县| 汪清县| 潞城市| 敦煌市| 南部县| 罗田县| 磴口县| 息烽县| 武冈市| 苗栗市| 仙居县|