@property有什么作用
时间: 2024-01-25 19:03:39 浏览: 24
@property是一个Python装饰器,用于在类中定义getter和setter方法,从而实现对类属性的访问和修改的控制。它的作用包括:
1. 使属性的访问更加简单明了,不需要使用getter和setter方法;
2. 控制属性的读取和修改,可以在读取和修改属性值时执行一些额外的逻辑;
3. 防止属性值被直接修改,增加程序的安全性。
使用@property装饰器将一个方法转换为属性后,可以通过类实例直接访问这个属性,就像访问普通的属性一样。例如:
```
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 TypeError('Name must be a string')
self._name = value
```
这里定义了一个Person类,其中有一个名为name的属性。使用@property装饰器将name方法转换为name属性,同时定义了一个name.setter方法,用于设置属性值。这样,就可以通过实例访问和修改name属性了,例如:
```
p = Person('Bob')
print(p.name) # 输出 Bob
p.name = 'Alice'
print(p.name) # 输出 Alice
p.name = 123 # 抛出 TypeError 异常
```