假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资(都是整数): (1)经理(Manager)——每月获得一份固定的工资 (2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成 (3)一般工人(Worker)——则按他每月工作的天数计算工资 在Employee中提供函数getSalary()计算每个雇员一个月的工资,并在子类中重写。 在main函数中构造Employee的三个变量,分别指向Manager、Salesman、Worker的对象,调用getSalary函数,输出三个对象的工资
时间: 2024-03-16 16:44:30 浏览: 65
好的,根据您的要求,我为您编写了如下的代码实现:
```python
class Employee:
def __init__(self, name):
self.name = name
def getSalary(self):
pass
class Manager(Employee):
def __init__(self, name, salary):
super().__init__(name)
self.salary = salary
def getSalary(self):
return self.salary
class Salesman(Employee):
def __init__(self, name, salary, commission):
super().__init__(name)
self.salary = salary
self.commission = commission
def getSalary(self):
return self.salary + self.commission
class Worker(Employee):
def __init__(self, name, daily_wage, days_worked):
super().__init__(name)
self.daily_wage = daily_wage
self.days_worked = days_worked
def getSalary(self):
return self.daily_wage * self.days_worked
# create three employees
manager = Manager('John', 5000)
salesman = Salesman('Mary', 3000, 1000)
worker = Worker('Tom', 200, 25)
# print the salaries
print(manager.name, 'gets a salary of', manager.getSalary(), 'per month')
print(salesman.name, 'gets a salary of', salesman.getSalary(), 'per month')
print(worker.name, 'gets a salary of', worker.getSalary(), 'per month')
```
在上述代码中,我们定义了一个基类 `Employee`,并在其子类 `Manager`、`Salesman` 和 `Worker` 中分别实现了 `getSalary` 函数。对于 `Manager` 类,其工资是固定的,因此 `getSalary` 函数直接返回其固定工资;对于 `Salesman` 类,其工资由基本工资和销售提成两部分组成,因此 `getSalary` 函数返回这两部分的和;对于 `Worker` 类,其工资按照每天的工作天数乘以每天的工资计算,因此 `getSalary` 函数返回这两者的乘积。
在主函数中,我们创建了一个 `Manager` 对象、一个 `Salesman` 对象和一个 `Worker` 对象,并通过调用它们的 `getSalary` 函数来计算并输出它们的工资。运行上述代码,可以得到如下的输出:
```
John gets a salary of 5000 per month
Mary gets a salary of 4000 per month
Tom gets a salary of 5000 per month
```
其中,`Mary` 的工资由于销售提成的存在,比基本工资多了 1000 元。
阅读全文