python @property ...... @**.setter
时间: 2023-11-30 12:04:31 浏览: 69
`@property` 和 `@setter` 是 Python 中装饰器的一种,用于定义类中的属性和属性的赋值方法。
`@property` 可以将一个方法转换为一个只读的属性,它允许我们像访问属性一样访问方法,而无需调用该方法。`@property` 常用于隐藏类中的属性,通过方法来访问属性,以保证属性值的安全性和正确性。
`@setter` 是 `@property` 的补充,它用于为已定义的属性添加设置属性值的方法。通过 `@setter` 装饰的方法可以在属性被设置时执行一些逻辑,比如检查属性值的合法性,更新其他相关属性等。
示例代码如下:
```python
class MyClass:
def __init__(self):
self._x = None
@property
def x(self):
return self._x
@x.setter
def x(self, value):
if value < 0:
raise ValueError("x must be non-negative")
self._x = value
```
在上面的代码中,使用 `@property` 定义了属性 `x` 的 getter 方法,使用 `@x.setter` 定义了属性 `x` 的 setter 方法。这样就可以通过 `my_class_instance.x` 访问 `x` 属性,通过 `my_class_instance.x = new_value` 设置 `x` 属性的值。在设置属性值时,会调用 `x` 的 setter 方法,如果传入的值小于 0,就会抛出 `ValueError` 异常。
阅读全文