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