5. 编写类Employee,其有age,salary等属性,使用property装饰器限定age范围在[20,60],salary范围在[3000,10000]。编写示例验证装饰器的有效性
时间: 2024-10-06 12:04:33 浏览: 20
为了创建一个名为`Employee`的类,其中包含`age`和`salary`属性,并使用`property`装饰器限制这两个属性的值范围,首先我们需要定义两个`setter`和`getter`方法,它们将在`@property`装饰下被调用。然后我们将这些方法应用到`age`和`salary`上。
```python
class Employee:
def __init__(self):
self._age = None
self._salary = None
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if not (20 <= value <= 60):
raise ValueError("Age must be between 20 and 60")
self._age = value
@property
def salary(self):
return self._salary
@salary.setter
def salary(self, value):
if not (3000 <= value <= 10000):
raise ValueError("Salary must be between 3000 and 10000")
self._salary = value
# 示例验证装饰器有效性
emp = Employee()
emp.age = 35 # 正确设置年龄
emp.salary = 7000 # 错误设置工资,因为超出了范围,会抛出ValueError
```
在这个例子中,当我们尝试给`age`或`salary`赋值时,如果值不在指定范围内,将会引发一个`ValueError`异常,从而确保了属性值始终处于有效范围内。
阅读全文