首頁  >  文章  >  後端開發  >  為什麼 Python 中的方法不表現出引用相等性?

為什麼 Python 中的方法不表現出引用相等性?

Barbara Streisand
Barbara Streisand原創
2024-10-30 00:00:291030瀏覽

Why Do Methods Not Exhibit Reference Equality in Python?

為什麼方法不表現出引用相等性?

在 Python 中,雖然函數保持引用相等性,但方法卻不然。這種差異源自於方法的創建方式。

方法建立

與函數不同,方法物件在每次存取時都會被實例化。這是因為方法本質上是描述符,當呼叫 .__get__ 方法時,它們會傳回一個方法物件。

方法相等性測試

在 Python 3.8 及更高版本中,方法相等性是透過比較 .__self__ 和 .__func__ 屬性來決定的。如果它們引用相同的函數和實例,則這些方法被認為是相等的。然而,在 3.8 之前,方法相等性行為根據方法的實現而不一致。

意義

方法相等性的這種變化會影響多種場景:

  • 當使用is 運算子檢查方法是否相算符檢查方法是否相算符檢查方法是否相算符檢查方法同時,除非方法綁定到相同的實例和函數,否則它將傳回False。
  • 相反,Python 3.8 中方法的 == 相等性檢定透過比較 .__self__ 和 .__func__ 屬性來提供預期結果。

測試函數同一性的解

要測試方法是否代表相同的底層函數,您可以可以比較它們的.__func__ 屬性:

以上是為什麼 Python 中的方法不表現出引用相等性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn