重寫實例上的特殊方法:探索
想像一種情況,您有一個類別的實例,並且希望修改它特殊方法,例如__repr__()。嘗試重寫這些方法時,您可能會遇到意外行為。
為了說明這一點,請考慮以下程式碼:
呼叫repr(a) 時,您期望獲得「A ,」鑑於repr 已被覆蓋。然而,結果並不如預期。
這個差異源自於Python呼叫特殊方法的方式。通常,Python 僅對類別本身執行特殊方法,而不對其實例執行特殊方法。因此,直接在實例上覆寫 repr 是無效的。
要克服此限制,請考慮以下方法:
在此修改後的程式碼中,實例上的 repr可以透過替換來覆寫_repr().
將此行為與以下程式碼片段進行對比,舉例說明了重寫特殊方法和常規方法之間的區別:
在本例中,foo實例上的特殊方法已成功重寫。然而,值得注意的是,這種能力是常規方法所獨有的。
以上是為什麼我不能直接在 Python 實例上重寫特殊方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!