定义一个抽象基类教师类Teacher由教师类派生出讲师Lecturer、课抽象基类和各派生类均有一个公有成员函数Salary 用于计算各位教师的工资总额。
from abc import ABC, abstractmethod
class Teacher(ABC):
def __init__(self, name, salary):
self.name = name
self.salary = salary
@abstractmethod
def Salary(self):
pass
class Lecturer(Teacher):
def __init__(self, name, salary, bonus):
super().__init__(name, salary)
self.bonus = bonus
def Salary(self):
return self.salary + self.bonus
class Course(ABC):
@abstractmethod
def Salary(self):
pass
class MathCourse(Course):
def __init__(self, hours, rate):
self.hours = hours
self.rate = rate
def Salary(self):
return self.hours * self.rate
class EnglishCourse(Course):
def __init__(self, hours, rate):
self.hours = hours
self.rate = rate
def Salary(self):
return self.hours * self.rate
def calculate_total_salary(teachers):
total_salary = 0
for teacher in teachers:
total_salary += teacher.Salary()
return total_salary
lecturer1 = Lecturer("John", 5000, 1000)
lecturer2 = Lecturer("Jane", 6000, 1500)
math_course = MathCourse(40, 100)
english_course = EnglishCourse(30, 80)
teachers = [lecturer1, lecturer2, math_course, english_course]
total_salary = calculate_total_salary(teachers)
print("Total Salary:", total_salary)
这里定义了一个抽象基类Teacher,包含一个抽象方法Salary()。Lecturer类继承自Teacher类,并重写了Salary()方法来计算讲师的工资总额。
另外定义了一个抽象基类Course,也包含一个抽象方法Salary()。MathCourse和EnglishCourse类继承自Course类,并重写了Salary()方法来计算数学课程和英语课程的工资总额。
最后,定义了一个calculate_total_salary()函数,用于计算教师的工资总额。通过调用Salary()方法,可以计算出各位教师的工资总额。
示例中创建了两个讲师对象和两个课程对象,并将它们放入一个列表中。然后调用calculate_total_salary()函数来计算教师的工资总额,并输出结果。
原文地址: https://www.cveoy.top/t/topic/i9W2 著作权归作者所有。请勿转载和采集!