某学校教师每月工资的计算公式如下:固定工资+课时补贴。1.教授(Professor)的固定工资为5000元,每个课时补贴50元;2.副教授(ViceProfessor )的固定工资为3000元,每个课时补贴30元;3.讲师(Tutor)的固定工资为2000元,每个课时补贴20元。定义教师(Teacher)抽象类,派生不同职称的教师子类,编写程序求若干教师的月工资。
时间: 2024-01-21 20:19:18 浏览: 161
输入教师和对应的课时数,输出与之相对应的工资数
5星 · 资源好评率100%
以下是实现该程序的示例代码,其中使用了抽象类和多态的概念:
```python
from abc import ABC, abstractmethod
class Teacher(ABC):
def __init__(self, name, fixed_salary, hour_salary):
self.name = name
self.fixed_salary = fixed_salary
self.hour_salary = hour_salary
@abstractmethod
def get_title(self):
pass
def get_month_salary(self, hour_num):
return self.fixed_salary + self.hour_salary * hour_num
class Professor(Teacher):
def __init__(self, name):
super().__init__(name, 5000, 50)
def get_title(self):
return "Professor"
class ViceProfessor(Teacher):
def __init__(self, name):
super().__init__(name, 3000, 30)
def get_title(self):
return "ViceProfessor"
class Tutor(Teacher):
def __init__(self, name):
super().__init__(name, 2000, 20)
def get_title(self):
return "Tutor"
# 测试代码
p1 = Professor("Amy")
vp1 = ViceProfessor("Bob")
t1 = Tutor("Chris")
print(p1.get_title(), p1.get_month_salary(80))
print(vp1.get_title(), vp1.get_month_salary(60))
print(t1.get_title(), t1.get_month_salary(40))
```
输出结果为:
```
Professor 9000
ViceProfessor 4800
Tutor 2800
```
其中,`Teacher` 是一个抽象类,包含了抽象方法 `get_title` 和非抽象方法 `get_month_salary`,前者用于获取教师的职称,后者用于计算月工资。抽象方法必须在派生类中实现,这里的派生类包括 `Professor`、`ViceProfessor` 和 `Tutor`,分别代表不同职称的教师。在每个子类的构造函数中,调用了父类的构造函数,传递了固定工资和每个课时补贴的参数。最后,使用测试代码创建了三个不同职称的教师对象,并计算了他们的月工资。
阅读全文