2015-02-06 187 views
-1

我很困惑python中的概念 - 基類覆蓋。我瞭解到,在不同的類中可以有兩個具有相同名稱的不同函數,並且根據對象來自哪個類,將在對象上調用正確的函數。 但是,我剛剛瞭解到超級電話,並且我知道如果您取消(糾正過去時態?),則可以使用該功能。我很困惑,因爲重寫的函數並沒有消失,是嗎?爲什麼我需要使用超級通話「恢復」它?Python類覆蓋

+2

此鏈接可能有助於理解Python中的方法解析順序。 http://python-history.blogspot.com/2010/06/method-resolution-order.html – ozgur 2015-02-06 01:11:00

回答

1

孩子的類型是第一個MRO,所以即使其父母有相同的方法,它的方法也會被調用。 super在繼承鏈中的下一個鏈接處「重新啓動」MRO,並允許發現屬於父類的屬性。

+0

我不確定MRO是什麼,但我知道你在說什麼。思考一下後,我想我有一個答案(像我這樣的編程新手獲得),誰知道這個更好告訴我,如果這是正確的? 派生類中的對象只能使用派生類中的重寫函數。 ** super **允許對象從基類訪問原始函數。 – 2015-02-06 01:21:49

+0

MRO是我回答中描述的鏈接。 – 2015-02-06 01:22:20

+0

我知道,但我很難理解它,因爲唯一暴露於python的是codeacademy。 – 2015-02-06 01:25:03