中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

呼伦贝尔市| 浠水县| 兴隆县| 抚松县| 桐城市| 肇东市| 囊谦县| 璧山县| 九江县| 东乌| 东乡县| 怀柔区| 成武县| 米泉市| 德兴市| 鹿邑县| 贡嘎县| 廊坊市| 克山县| 神农架林区| 芒康县| 营山县| 县级市| 静乐县| 奎屯市| 蓬溪县| 天水市| 习水县| 青岛市| 澜沧| 霍城县| 新郑市| 刚察县| 老河口市| 行唐县| 扎囊县| 嘉祥县| 开阳县| 柳河县| 安溪县| 禄丰县|