【问题描述】 设公司有普通员工和经理两类人员。主函数已给出,编程设计普通员工类CommonWorker和经理类Manager,经理类除具有普通员工类的属性外。普通员工类的收入由基本工资和奖金构成,经理类的收入除基本工资和奖金外,还包括职务津贴。实现求两类员工工资的Pay函数。
时间: 2023-12-03 20:44:27 浏览: 75
下面是CommonWorker和Manager两个类的实现代码:
```python
class CommonWorker:
def __init__(self, name, base_salary, bonus):
self.name = name
self.base_salary = base_salary
self.bonus = bonus
def Pay(self):
return self.base_salary + self.bonus
class Manager(CommonWorker):
def __init__(self, name, base_salary, bonus, position_allowance):
super().__init__(name, base_salary, bonus)
self.position_allowance = position_allowance
def Pay(self):
return super().Pay() + self.position_allowance
```
在CommonWorker类中,我们定义了初始化函数__init__和计算工资的函数Pay。在初始化函数中,我们传入员工的姓名、基本工资和奖金,分别保存在self.name、self.base_salary和self.bonus变量中。在计算工资的函数Pay中,我们直接返回基本工资和奖金之和。
在Manager类中,我们定义了初始化函数__init__和计算工资的函数Pay。在初始化函数中,我们除了传入员工的姓名、基本工资和奖金之外,还传入了职务津贴,保存在self.position_allowance变量中。在计算工资的函数Pay中,我们先调用父类的Pay函数计算基本工资和奖金之和,然后加上职务津贴即可。注意,我们使用了super()函数来调用父类的Pay函数,这样写的好处是即使父类的实现发生了改变,子类的实现也不需要修改。
下面是主函数的代码:
```python
if __name__ == '__main__':
common_worker = CommonWorker('张三', 3000, 1000)
print(common_worker.name, '工资为:', common_worker.Pay())
manager = Manager('李四', 5000, 2000, 500)
print(manager.name, '工资为:', manager.Pay())
```
在主函数中,我们先创建了一个CommonWorker对象(即普通员工),传入姓名为'张三',基本工资为3000,奖金为1000。然后调用Pay函数计算工资并输出。
接着,我们创建了一个Manager对象(即经理),传入姓名为'李四',基本工资为5000,奖金为2000,职务津贴为500。同样地,我们调用Pay函数计算工资并输出。
运行上述代码,输出结果如下:
```
张三 工资为: 4000
李四 工资为: 7500
```
可以看到,我们成功地实现了两类员工的工资计算函数,并且在Manager类中添加了职务津贴的计算。