@age.setter
时间: 2023-07-23 11:09:29 浏览: 197
`@age.setter`是一个装饰器,用于定义属性的设置方法。在Python中,我们可以使用`@property`装饰器定义一个属性,并使用`@属性名.setter`装饰器定义该属性的设置方法。
以下是一个示例:
```python
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("Age cannot be negative.")
self._age = value
person = Person("Alice", 25)
print(person.age) # 输出:25
person.age = 30
print(person.age) # 输出:30
person.age = -5 # 抛出 ValueError: Age cannot be negative.
```
在上面的示例中,`Person`类定义了一个`age`属性,并使用`@property`装饰器将其定义为只读属性。然后,我们使用`@age.setter`装饰器定义了一个名为`age`的setter方法,用于设置`age`属性的值。在setter方法中,我们添加了一些验证逻辑,如果传入的值小于0,则抛出`ValueError`异常。
通过使用`@age.setter`装饰器,我们可以在属性被设置时执行一些自定义的逻辑,如添加验证、范围限制等。
注意:在setter方法中,通常会使用一个带有下划线前缀的私有变量(如`_age`)来存储属性的实际值,以避免与setter方法的命名冲突。这样做可以确保在获取属性值时使用`@property`装饰器定义的方法,在设置属性值时使用setter方法进行验证和处理。
阅读全文