在 Python 中,我們可以通過描述符類來實現對屬性的控制和管理。描述符是指實現了特定協議的類,可以被用于控制其他類中的屬性訪問。主要有 3 種描述符:數據描述符、非數據描述符和托管類。
數據描述符主要實現了 __get__ 和 __set__ 方法,可以用來控制屬性的讀取和設置。非數據描述符主要實現了 __get__,只能用來控制屬性的讀取。托管類可以使用 property() 函數創建,主要用于控制已有屬性的訪問。
下面是一個簡單的數據描述符的實現代碼:
class Value: def __init__(self, value): self.value = value def __get__(self, instance, owner): return self.value def __set__(self, instance, value): if value< 0: raise ValueError("value can not be negative") self.value = value class MyClass: value = Value(10) my_obj = MyClass() print(my_obj.value) # 輸出 10 my_obj.value = 20 print(my_obj.value) # 輸出 20 my_obj.value = -10 # 輸出 ValueError("value can not be negative")
以上代碼中,Value 類是一個數據描述符,實現了 __get__ 和 __set__ 方法,控制 MyClass 類中的 value 屬性的讀取和設置。在 MyClass 中初始化時,將 value 屬性賦值為一個 Value 對象,其值為 10。然后我們分別對 value 屬性進行了讀取、設置,最后嘗試將 value 屬性設置為一個負數,會拋出 ValueError 異常。
上一篇python 提取根域名
下一篇vue對接口步驟