@property
是 Python 中的一个装饰器(decorator),用于创建 getter 和 setter 方法。其作用是将类的方法转换为相应的属性,从而使得代码更加简洁明了。
在 Python 中,我们可以通过直接访问类的属性来获取或设置属性的值。但是,如果我们需要对属性的访问或设置进行一些限制或者需要对属性值进行处理,那么就需要使用 getter 和 setter 方法。使用 @property
装饰器可以将 getter 和 setter 方法转换为属性,使得代码更加易读。
下面是一个简单的例子,演示了如何使用 @property
装饰器:
pythonCopy codeclass Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
@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.name) # 输出 "Alice"
person.name = "Bob"
print(person.name) # 输出 "Bob"
person.age = -1 # 抛出 ValueError 异常
在上面的例子中,我们使用 @property
装饰器将 name()
和 age()
方法转换为属性。同时,我们也定义了相应的 setter 方法,用于对属性的值进行限制和处理。