Python的@property
时间: 2023-07-10 13:23:08 浏览: 88
Python 中@property的用法详解
5星 · 资源好评率100%
@property 是 Python 中的一个内置装饰器,它能够将类方法转换为只读属性,从而使得对类的属性进行读取操作时更加方便。使用 @property 装饰器可以将一个类的方法转化为一个只读属性,该属性可以被直接调用而无需在后面添加括号。
例如,假设我们有一个类 Person,其中包含了 name 和 age 两个属性,我们想要对 age 属性进行只读操作,可以这样写:
```python
class Person:
def __init__(self, name, age):
self.name = name
self._age = age # 加了下划线表示私有属性,虽然Python没有真正的私有属性
@property
def age(self):
return self._age
```
这样,我们就可以通过 person.age 来获取 age 的值,而无需调用 person.age() 这个方法了。同时,我们也可以在 setter 方法中添加一些逻辑,以保证对属性的赋值操作是合法的。例如:
```python
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 not isinstance(value, int):
raise ValueError("Age must be an integer.")
elif value < 0 or value > 120:
raise ValueError("Age must be in range 0-120.")
else:
self._age = value
```
这样,我们就可以限制 age 的取值范围,保证程序的正确性。
阅读全文