在 Python 中使用 setter 方法可以用來設置類的屬性值。setter 方法通常用來對屬性進行過濾、驗證或其他處理,以確保屬性值的正確性和一致性。
要定義一個 setter 方法,需要使用 @property
裝飾器將屬性標記為可訪問且可寫的,并使用屬性名定義一個 setter 方法。
以下是一個示例,展示了如何使用 setter 方法來設置和獲取一個類的屬性:
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, value):
if not isinstance(value, str):
raise ValueError("Name must be a string")
self._name = value
person = Person("Alice")
print(person.name) # 輸出 "Alice"
person.name = "Bob"
print(person.name) # 輸出 "Bob"
person.name = 123 # 會拋出 ValueError 異常
在上面的示例中,name
屬性通過 @property
裝飾器定義為可訪問的。然后,使用 @name.setter
裝飾器定義了一個 setter 方法,該方法會在設置屬性值時被調用。在 setter 方法中,我們可以進行一些額外的操作,如類型檢查、驗證等。
當我們通過 person.name = "Bob"
這樣的語法來設置屬性值時,實際上會調用 name
的 setter 方法。而當我們使用 person.name
這樣的語法來獲取屬性值時,實際上會調用 name
的 getter 方法,由于我們沒有定義 getter 方法,所以默認會返回屬性的當前值。
需要注意的是,屬性名和 setter 方法名必須一致,都是 name
。這樣 Python 才能正確地識別 setter 方法與哪個屬性相關聯。