首頁  >  文章  >  後端開發  >  Python 描述子「__get__」和「__set__」方法如何運作?

Python 描述子「__get__」和「__set__」方法如何運作?

DDD
DDD原創
2024-11-26 15:57:13821瀏覽

How Do Python Descriptors' `__get__` and `__set__` Methods Work?

理解Python描述詞:getset

在Python中,描述符是一種強大的機制,允許物件攔截屬性存取和修改。為了掌握它們的功能,讓我們深入研究一下提供的程式碼:

class Celsius(object):
    def __init__(self, value=0.0):
        self.value = value
    def __get__(self, instance, owner):
        return self.value
    def __set__(self, instance, value):
        self.value = float(value)

class Temperature(object):
    celsius = Celsius()

Q1:為什麼我需要描述符類別?

A1:描述符類封裝了攔截屬性存取和修改背後的邏輯。透過將此邏輯與使用它的類別分離,您可以重複使用它並提供一致的介面來存取和修改屬性。

Q2:__get__ 中的實例和擁有者是什麼?

A2:

  • 實例:存取時屬性,此參數表示擁有描述符的類別的實例(例如temp.celsius 中的temp )。
  • owner: 此參數表示定義描述符的類別(例如,溫度)。

Q3:我如何呼叫/使用這個例如?

A3: 您可以如下存取和修改 celsius 屬性:

temp = Temperature()
temp.celsius  # calls `celsius.__get__` and returns the current Celsius value
temp.celsius = 25.0  # calls `celsius.__set__` to update the Celsius value

注意:如果您嘗試直接存取Temperature.celsius,則實例將為 None。

以上是Python 描述子「__get__」和「__set__」方法如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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