2017-04-06 49 views
0

我正在編寫一個元類,並覆蓋__new____init__以具有(相同)自定義參數。當我從重寫的方法調用它們時,我必須將完全相同的參數傳遞給type.__new__type.__init__嗎?必須輸入.__ new__和type .__ init__傳遞相同的參數嗎?

如果沒有必要,這將是有用的,因爲我反過來從我的元類繼承並進一步專門化。在這些小類中,我正在做我的__init__方法的大部分工作。如果我必須將相同的參數傳遞給type.__new__type.__init__,我將不得不在所有子類中覆蓋__new__

回答

0

Python文檔object.__new__作爲接收參數,最終將傳遞到__init__。因此,如果Python打電話給你的__new__,那就是你將要得到的。 (當然除了第一個參數,這將是__new__調用中的類和__init__調用中的實例。)

檢查新結果。如果它是該類的一個實例,則調用__init__

在我看來,如果__new__是基於參數分配數據,那麼它會分配錯誤的數據,如果它給了錯誤的參數。

所以我會說,除非你有一個特定的用例記住你知道你的參數不影響對象的創建,你應該遵循協議。

相關問題