為什麼方法不表現出引用相等性?
在 Python 中,雖然函數保持引用相等性,但方法卻不然。這種差異源自於方法的創建方式。
方法建立
與函數不同,方法物件在每次存取時都會被實例化。這是因為方法本質上是描述符,當呼叫 .__get__ 方法時,它們會傳回一個方法物件。
方法相等性測試
在 Python 3.8 及更高版本中,方法相等性是透過比較 .__self__ 和 .__func__ 屬性來決定的。如果它們引用相同的函數和實例,則這些方法被認為是相等的。然而,在 3.8 之前,方法相等性行為根據方法的實現而不一致。
意義
方法相等性的這種變化會影響多種場景:
測試函數同一性的解
要測試方法是否代表相同的底層函數,您可以可以比較它們的.__func__ 屬性:
以上是為什麼 Python 中的方法不表現出引用相等性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!