溫馨提示×

python setter方法怎么使用

小億
115
2023-12-26 12:48:01
欄目: 編程語言

在 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 方法,該方法會在設置屬性值時被調(diào)用。在 setter 方法中,我們可以進行一些額外的操作,如類型檢查、驗證等。

當我們通過 person.name = "Bob" 這樣的語法來設置屬性值時,實際上會調(diào)用 name 的 setter 方法。而當我們使用 person.name 這樣的語法來獲取屬性值時,實際上會調(diào)用 name 的 getter 方法,由于我們沒有定義 getter 方法,所以默認會返回屬性的當前值。

需要注意的是,屬性名和 setter 方法名必須一致,都是 name。這樣 Python 才能正確地識別 setter 方法與哪個屬性相關聯(lián)。

0