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

Python類的多繼承的搜索順序

 更新時間:2024年03月31日 10:58:51   作者:琛cc  
python和C++一樣,支持多繼承,本文主要介紹了Python類的多繼承的搜索順序,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Python支持多繼承,而任何實現(xiàn)多繼承的語言都需要處理潛在的命名沖突,這種命名沖突是由不相關(guān)的祖先類實現(xiàn)同名方法引起,這種沖突就被稱為 菱形問題。

 需要聲明的是,在 Python3 中多繼承的搜索順序為:從左至右,廣度優(yōu)先;Python2采用的多繼承搜索順序為:從左至右,深度優(yōu)先。

一、首先,先來看一下菱形問題

它的繼承關(guān)系、代碼實現(xiàn)和運(yùn)行結(jié)果如下圖所示:

class A:
    def show(self):
        print('---A---')


class B(A):
    def fun(self):
        print('this is class B!')


class C(A):
    def fun(self):
        print('this is class C!')


class D(B, C):
    def show(self):
        super().show()   #--->1
        print('---D---')    

    def test(self):
        self.show()   #--->2
        super().show()   #--->3
        self.fun()  #--->4
        super().fun()   #--->5
        C.fun(self)   #---->6
        C.show(self)    #--->7


d = D()
d.show()
print('-----------------------------')
d.test()

  首先,創(chuàng)建D類的對象的d,然后調(diào)用其中的 show 方法,再調(diào)用 test 方法(以下序號在代碼中標(biāo)出):

1、調(diào)用 show 方法,由于類 D 實現(xiàn)了自己的 show 方法,則此時進(jìn)入 D 類的 show 方法,然后使用 super 方法調(diào)用了父類的 show方法,B、C類都沒有實現(xiàn)該方法,則繼續(xù)往上找,A 類中實現(xiàn)了 show 方法,則執(zhí)行該方法,再繼續(xù)向下執(zhí)行。

2、在 test 方法中首先調(diào)用了自己的 show 方法,則重復(fù)上一條的執(zhí)行順序。

3、此處調(diào)用父類的 show 方法,往上找A類中實現(xiàn)了 show 方法,則執(zhí)行該方法。

4、由于D類沒有 fun 方法,則根據(jù)搜索順序,B--->A,則執(zhí)行B類的 fun 方法。

5、調(diào)用父類的 fun 方法,搜索順序與上一條相同。

6、此處需要注意,直接在類上調(diào)用實例方法時,必須顯示的傳入?yún)?shù) self。

二、再來看一個例子,其繼承關(guān)系、代碼實現(xiàn)和運(yùn)行結(jié)果如下圖所示:

class A:
    pass


class B:
    pass


class C(A):
    pass


class D(A):
    pass


class E(B, C):
    pass


class G1(C, B, D):
    pass


class F1(D, B):
    pass


class F2(C, D):
    pass


class G2(C, D, B):
    pass


class G3(D, B, C):
    pass


print(C.__mro__)
print(D.__mro__)
print(E.__mro__)
print(F1.__mro__)
print(F2.__mro__)
print(G1.__mro__)
print(G2.__mro__)
print(G3.__mro__)

在這里,首先需要介紹一個類的屬性 __mro__ ,它的返回值是一個元組,可按照方法解析順序(由于Python會按照特定的順序遍歷繼承圖,這個順序成為方法解析順序)列出各個超類,從當(dāng)前類一直向上,知道 object 類。為了更加深入的說明問題,在代碼實現(xiàn)時,增加了幾個不同的繼承關(guān)系。從以上代碼中,可以得出以下結(jié)論:

1、類的多繼承與繼承的順序有關(guān),按照從左到右的順序,依次搜索。

2、繼承采用從左到右,廣度優(yōu)先順序進(jìn)行搜索,例如類 F2。

3、同一級別的父類搜索完之后,才繼續(xù)向上一級搜索,例如類 G1、G2、G3。

4、所有的繼承搜索順序到達(dá) object 類停止。

到此這篇關(guān)于Python類的多繼承的搜索順序的文章就介紹到這了,更多相關(guān)Python類多繼承順序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)批量將PPT轉(zhuǎn)換成長圖

    Python實現(xiàn)批量將PPT轉(zhuǎn)換成長圖

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實現(xiàn)批量將PPT轉(zhuǎn)換成長圖,并且圖片名稱與PPT文件名稱相同,保存位置相同,感興趣的小伙伴可以了解下
    2023-08-08
  • 一道python走迷宮算法題

    一道python走迷宮算法題

    這篇文章主要為大家詳細(xì)介紹了一道python走迷宮算法題,用一個二維數(shù)組表示一個簡單的迷宮,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python編程嵌套函數(shù)實例代碼

    python編程嵌套函數(shù)實例代碼

    這篇文章主要介紹了python編程嵌套函數(shù)實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python中數(shù)據(jù)解壓縮的技巧分享

    Python中數(shù)據(jù)解壓縮的技巧分享

    在日常的數(shù)據(jù)處理和分析中,經(jīng)常會遇到需要對壓縮數(shù)據(jù)進(jìn)行解壓縮的情況,本文主要來和大家分享一下Python中數(shù)據(jù)解壓縮的相關(guān)技巧,希望對大家有所幫助
    2024-03-03
  • pytorch和numpy默認(rèn)浮點類型位數(shù)詳解

    pytorch和numpy默認(rèn)浮點類型位數(shù)詳解

    這篇文章主要介紹了pytorch和numpy默認(rèn)浮點類型位數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python 批量添加的button 使用同一點擊事件的方法

    python 批量添加的button 使用同一點擊事件的方法

    今天小編就為大家分享一篇python 批量添加的button 使用同一點擊事件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 基于PyQt制作小紅書圖片抓取工具

    基于PyQt制作小紅書圖片抓取工具

    這篇文章主要為大家詳細(xì)介紹了如何基于PyQt制作一個小紅書圖片抓取工具,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • pandas dataframe統(tǒng)計填充空值方式

    pandas dataframe統(tǒng)計填充空值方式

    這篇文章主要介紹了pandas dataframe統(tǒng)計填充空值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python 示例分享---邏輯推理編程解決八皇后

    python 示例分享---邏輯推理編程解決八皇后

    八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾于1848年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。
    2014-07-07
  • python 獲取計算機(jī)的網(wǎng)卡信息

    python 獲取計算機(jī)的網(wǎng)卡信息

    這篇文章主要介紹了python 獲取計算機(jī)的網(wǎng)卡信息的方法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2021-02-02

最新評論

威宁| 安平县| 天气| 衢州市| 临洮县| 连山| 闵行区| 乌海市| 晋州市| 临清市| 衢州市| 西乌珠穆沁旗| 会东县| 宁南县| 从化市| 洪泽县| 张家界市| 偃师市| 凌海市| 青海省| 久治县| 三门峡市| 莱芜市| 南昌市| 唐海县| 灌阳县| 肃宁县| 江门市| 马边| 洛宁县| 佛坪县| 团风县| 娱乐| 海南省| 顺义区| 齐河县| 丹巴县| 明水县| 湖南省| 美姑县| 子洲县|