Python @property装饰器
@property装饰器是Python中用来定义属性的一种方式。它可以将类方法转换为属性来访问。使用该装饰器可以为类添加读取、设置和删除属性的方法,使得属性的操作更加直观和安全。
@property装饰器的语法如下:
@property
def attribute(self):
# getter method code
@attribute.setter
def attribute(self, value):
# setter method code
@attribute.deleter
def attribute(self):
# deleter method code
@property装饰器的作用是将一个方法转换为属性,方法名即为属性名。对于上述示例中的attribute属性,@property装饰器将其转换为只读属性,即只有getter方法。如果需要添加可写和可删除的操作,可以使用.setter和.deleter装饰器。
例如,假设我们有一个Person类,如下所示:
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("John", 20)
print(person.age) # 输出 20
person.age = 25
print(person.age) # 输出 25
person.age = -10 # 抛出异常:ValueError: Age cannot be negative
在上述示例中,通过@property装饰器将age方法转换为age属性。age属性的值存储在私有变量_age
中,以避免直接访问和修改。使用age.setter装饰器,我们可以方便地对属性进行设置,并添加额外的验证逻辑。在上述示例中,如果设置的年龄小于0,则会抛出ValueError异常。
总结起来,@property装饰器提供了一种简洁、安全和直观的方式来实现属性的访问、设置和删除。它在类中定义属性的同时,还可以进行额外的处理和验证。