在 Python 中,@property
是一种装饰器,可以将一个方法转换为属性,使其可以像访问属性一样被调用,而不是像调用方法一样。
使用 @property
装饰器可以将一个方法转换为只读属性,也可以通过定义 setter
方法来实现可写属性。这样可以方便地访问和修改对象的属性,同时也可以在访问和修改属性时执行一些额外的逻辑。
下面是一个示例,演示了如何使用 @property
装饰器定义一个只读属性和一个可写属性:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if not isinstance(value, int):
raise TypeError('Age must be an integer')
if value < 0 or value > 120:
raise ValueError('Age must be between 0 and 120')
self._age = value
# 创建一个 Person 对象
person = Person('Alice', 25)
# 访问只读属性 name
print(person.name)
# 访问可写属性 age
person.age = 30
print(person.age)
# 尝试设置不合法的年龄
person.age = 'thirty'
使用 @property
装饰器定义的属性名和方法名应该相同,这样可以使代码更加清晰易懂。