在Python中,property
函數是一個內置函數,用于創建可讀寫的屬性。
property
函數可以用作裝飾器,將一個方法轉換為相應的可讀寫屬性。它接受四個參數:fget
、fset
、fdel
和doc
。
fget
:獲取屬性值的函數。它將在訪問屬性時被調用。
fset
:設置屬性值的函數。它將在給屬性賦值時被調用。
fdel
:刪除屬性值的函數。它將在使用del
關鍵字刪除屬性時被調用。
doc
:屬性的文檔字符串。
以下是property
函數的基本用法示例:
class MyClass:
def __init__(self):
self._x = 0
# 定義可讀寫的屬性x
@property
def x(self):
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
# 創建實例
obj = MyClass()
# 訪問屬性
print(obj.x) # 輸出: 0
# 設置屬性
obj.x = 10
# 再次訪問屬性
print(obj.x) # 輸出: 10
# 刪除屬性
del obj.x
# 再次訪問屬性
print(obj.x) # 拋出 AttributeError: 'MyClass' object has no attribute '_x'
在上面的示例中,通過@property
裝飾器將x
方法轉換為可讀寫的屬性。@x.setter
裝飾器定義了設置屬性值的方法,@x.deleter
裝飾器定義了刪除屬性值的方法。