2015-04-12 49 views
2

我剛剛在看Raymond Hettinger的Super considered super談話。其中,他描述了super()如何調用下一個班級。他通過使用顯示方法解析順序的help()方法直觀地演示了這一點。super()行止擋器

在談話結束時,他描述了在方法分辨率行結束時需要超級塞子類。我用這個術語搜索了一下,沒有發現任何東西,所以我不清楚他在這裏的含義 - 這個瓶塞階級在實踐中是如何工作的?

回答

4

這只是在鏈中的方法,使用super()調用下一個方法。通常這些位於層次結構的基類中。

畢竟,如果MRO鏈中沒有下一個方法需要調用,那麼會出現錯誤,因爲沒有下一個方法可以查找。

雷蒙德對此非常明確;從視頻中轉錄:

您在末端放置了塞子物體; 不是object,您可以創建一個對象,將其稱爲Root,並放入其中,並且所有這些對象都具有感興趣的方法;通過它,但實際上並沒有呼叫super()。鏈末端有人不應該打電話給super()

+0

好吧,現在看起來很明顯,你把它說得那樣。我以爲我可能錯過了一些東西,謝謝! – rix