在 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
装饰器定义的属性名和方法名应该相同,这样可以使代码更加清晰易懂。