要用到一个Employee雇员类,这个Employee类中有两个属性,分别是雇员的姓名name和当前工资salary,在这个雇员类上加了一些限制: 固定雇员的工资不得低于工资的最低标准3000元 普通雇员每次工资的变化幅度不得高于原工资的20% 经理也是员工,但是每次工资的变化幅度不能高于原工资的30% 为上面的限制定义了两个用户异常IllegalSalaryException和 IllegalSalaryChangeException 并分别定义Employee、Manager类,其中Manager类是Employee类的子类,并编写一个简单的测试类Test,测试员工的最低工资的异常处理和员工工资变化幅度异常的处理。
时间: 2024-03-05 09:48:34 浏览: 42
好的,以下是一个实现代码:
```python
# 自定义IllegalSalaryException异常
class IllegalSalaryException(Exception):
pass
# 自定义IllegalSalaryChangeException异常
class IllegalSalaryChangeException(Exception):
pass
# 定义Employee类
class Employee:
def __init__(self, name, salary):
self.name = name
# 判断工资是否低于最低标准
if salary < 3000:
raise IllegalSalaryException("工资不能低于最低标准")
else:
self.salary = salary
# 定义加薪方法
def raise_salary(self, amount):
# 判断加薪幅度是否超过限制
if amount / self.salary > 0.2:
raise IllegalSalaryChangeException("加薪幅度不能超过原工资的20%")
else:
self.salary += amount
# 定义Manager类,继承自Employee类
class Manager(Employee):
def raise_salary(self, amount):
# 判断加薪幅度是否超过限制
if amount / self.salary > 0.3:
raise IllegalSalaryChangeException("加薪幅度不能超过原工资的30%")
else:
self.salary += amount
# 编写简单的测试类
class Test:
def test_employee(self):
try:
e1 = Employee("Tom", 2500)
except IllegalSalaryException as e:
print(e)
e2 = Employee("Jack", 3500)
try:
e2.raise_salary(800)
except IllegalSalaryChangeException as e:
print(e)
def test_manager(self):
m1 = Manager("Mike", 5000)
try:
m1.raise_salary(2000)
except IllegalSalaryChangeException as e:
print(e)
test = Test()
test.test_employee()
test.test_manager()
```
以上代码中定义了两个用户异常 `IllegalSalaryException` 和 `IllegalSalaryChangeException`,并定义了 `Employee` 和 `Manager` 两个类。其中 `Employee` 类有一个参数为 `name` 和 `salary` 的构造函数,并定义了加薪方法 `raise_salary`,在这两个方法中增加了对工资和加薪幅度的限制,并在超出限制时抛出相应的异常。`Manager` 类继承自 `Employee` 类,并重写了 `raise_salary` 方法,增加了对加薪幅度的限制。在测试类 `Test` 中,分别对 `Employee` 和 `Manager` 进行了测试,并捕获了相应的异常。
阅读全文