Python中既然可以直接通過父類名呼叫父類方法為什麼還會存在super函式?

時間 2021-05-12 05:36:25

1樓:

拾人牙慧:

不要一說到 super 就想到父類,super 指的是 MRO (Method Resolution Order,它代表了類繼承的順序) 中的下乙個類!

def super(cls, inst):

mro = inst.__class__.mro()return mro[mro.index(cls) + 1]它的設計目的:

解決多重繼承時父類的查詢問題,一般在子類中需要呼叫父類的方法時,才會這麼用。

所以在單重繼承中用不用 super 都沒關係,但約定俗成,無論單重繼承,還是多重繼承,都用 super 。

2樓:吉普賽

翻譯的國外最好的寫super文章,拿走不寫http://

blog.csdn.net/qq_14898613/article/details/53792270

3樓:ahuigo

1. python 實現了多繼承, 這個繼承的順序叫MRO(可以看看print(class.__mro__))

2. super 只是提供了一種呼叫父類方法. 它並不是實現多繼承的!

super 呼叫父類時, 其實就是搜尋:class.__mro__

很多人的疑問其實是MRO 本身, 這篇文章解釋得很好: Python的方法解析順序(MRO) · M-x

4樓:

@laike9m 的解釋很到位了,我想說:貌似沒法解決引數傳遞問題啊,只能用python所謂的魔法,把引數全部傳遞過去,可是兩個類,作者不同,什麼事情都能發生,引數名重複呢,感覺python這個機制不怎麼樣

5樓:

正好第一次接觸到這問題,搬運工

inheritance - Understanding Python super() with __init__() methods

6樓:

super(A,self).func 不是把A的父類的func執行,而是把A的父類的類型別序列中的所有型別的func都執行一次。

7樓:

blog.csdn.net/johnsonguo/article/details/585193這裡面寫的挺好的,可以參考下

既然遊戲的本質是學習,那為什麼不能直接通過遊戲學習?

PeRfume 不可行。只要是學習,就要付出努力。不要以為披著遊戲的外衣就能吸引人去努力。守望先鋒剛出的時候火不火?多少小夥伴整天 沒有屁股玩我要死了 等到出了排位,要求玩家拿出遊戲水平來了,一下子涼了一大截。激戰2,劍網三是我玩過的MMO,對比國內很多遊戲來說,夠良心了吧,幾乎不用氪金換屬性。但是...

真的有直接通過相親然後很快就結婚的嗎?

碎念Dream 你好。這是肯定有的,而且還不少。我認識一對夫妻,他們倆1周見面2次,第8天直接訂婚,1個月後閃婚,目前已經有兩個孩子。我一各朋友,認識1個月左右,奉子成婚。像這種類似的還有很多,現在日子都還算過得去。你要明白,往往男生都是主動方,女生通常都很被動,只要女生一鬆口,談結婚就很容易。這些...

為什麼電鋼琴不能直接通過耳機孔和手機耳機孔連線實現內錄呢?

星塵 不需要音效卡,轉接線就行。電鋼琴耳機孔輸出 3.5轉3.5線 音訊麥克風一分二線的麥克風端 手機耳機孔。完事兒。但是你可以發現這樣的方式錄出來的音質並不如你直接連線電鋼琴的耳機聽到的,音效卡可以解決雜音電流音,也沒有辦法解決這個問題。因為手機接收電平太小,錄入高電平資訊一定會丟失細節。但是如果...