property
函數(shù)用于在類中定義屬性。它可以將一個方法轉(zhuǎn)換為只讀屬性、可寫屬性或可讀寫屬性。
以下是使用 property
函數(shù)的基本語法:
class MyClass:
def __init__(self):
self._my_property = None
@property
def my_property(self):
return self._my_property
@my_property.setter
def my_property(self, value):
self._my_property = value
@my_property.deleter
def my_property(self):
del self._my_property
在上面的示例中,我們定義了一個名為 my_property
的屬性。它由一個名為 my_property
的方法和用于設(shè)置和刪除屬性的裝飾器組成。在 __init__
方法中,我們初始化 _my_property
為 None
。
要訪問該屬性,可以像訪問普通屬性一樣使用點運算符:
obj = MyClass()
print(obj.my_property) # 輸出:None
要設(shè)置該屬性的值,可以像給普通屬性賦值一樣進行賦值:
obj.my_property = 42
print(obj.my_property) # 輸出:42
要刪除該屬性,可以使用 del
語句:
del obj.my_property
print(obj.my_property) # 輸出:AttributeError: 'MyClass' object has no attribute '_my_property'
請注意,在上面的示例中,我使用了一個名為 _my_property
的變量來存儲屬性的實際值。這是一種常見的做法,以區(qū)分屬性和實際存儲值的命名。通常使用一個帶有前導(dǎo)下劃線的變量來表示屬性的私有性,以防止直接訪問。
也可以只定義只讀屬性,不提供設(shè)置和刪除方法。要實現(xiàn)只讀屬性,可以去掉 @my_property.setter
和 @my_property.deleter
裝飾器,只保留 @property
裝飾器。
希望以上解釋可以幫助到你!