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

Barbara Streisand
發布: 2024-10-30 00:00:29
原創
967 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!