python2 @property 装饰器
时间: 2023-09-05 12:11:50 浏览: 114
在 Python 2 中,@property 装饰器需要结合其他装饰器来定义属性的获取方法和设置方法。具体来说,需要使用 @<属性名>.getter 装饰器来定义获取方法,以及 @<属性名>.setter 装饰器来定义设置方法。
下面是一个示例:
```python
class Person(object):
def __init__(self, age):
self._age = age
def get_age(self):
return self._age
def set_age(self, value):
if value < 0:
raise ValueError("Age cannot be negative.")
self._age = value
age = property(get_age, set_age)
```
在上述示例中,我们定义了一个 Person 类,其中有一个私有属性 _age。通过 @property 装饰器,我们将 get_age 方法转化为只读属性的获取方法。然后,通过 age = property(get_age, set_age) 将 age 属性与对应的获取和设置方法关联起来。
这样,我们就可以通过 `person.age` 获取属性值,以及通过赋值语句 `person.age = 30` 设置属性值。在获取属性值时,会自动调用 `get_age()` 方法;在设置属性值时,会自动调用 `set_age(value)` 方法。
需要注意的是,在 Python 2 中,我们需要手动定义获取和设置方法,并使用 property() 函数将它们绑定到属性上。而在 Python 3 中,只需要使用 @property 和 @<属性名>.setter 装饰器即可。
阅读全文