from abc import ABC, abstractmethod

class Teacher(ABC):
    def __init__(self, basic_salary, hour_fee, basic_allowance):
        self.basic_salary = basic_salary
        self.hour_fee = hour_fee
        self.basic_allowance = basic_allowance
    
    @abstractmethod
    def salary(self):
        pass

class Lecturer(Teacher):
    def __init__(self):
        super().__init__(800, 40, 1300)
        self.hours = 0
    
    def set_hours(self, hours):
        self.hours = hours
    
    def salary(self):
        performance_allowance = max(0, (self.hours - 25) * 80)
        total_salary = self.basic_salary + self.hour_fee * self.hours + self.basic_allowance + performance_allowance
        return total_salary

class AProf(Teacher):
    def __init__(self, guidance_number):
        super().__init__(900, 45, 1800)
        self.hours = 0
        self.guidance_number = guidance_number
    
    def set_hours(self, hours):
        self.hours = hours
    
    def salary(self):
        performance_allowance = max(0, (self.hours - 30) * 100)
        total_salary = self.basic_salary + self.hour_fee * self.hours + self.basic_allowance + performance_allowance + self.guidance_number * 100
        return total_salary

class Prof(Teacher):
    def __init__(self, guidance_number, research_equivalent):
        super().__init__(1000, 50, 2300)
        self.hours = 0
        self.guidance_number = guidance_number
        self.research_equivalent = research_equivalent
    
    def set_hours(self, hours):
        self.hours = hours
    
    def salary(self):
        performance_allowance = max(0, (self.hours - 36) * 100)
        total_salary = self.basic_salary + self.hour_fee * self.hours + self.basic_allowance + performance_allowance + self.guidance_number * 100 + self.research_equivalent * 120
        return total_salary

lecturer = Lecturer()
lecturer.set_hours(30)
print(lecturer.salary())

aprof = AProf(3)
aprof.set_hours(40)
print(aprof.salary())

prof = Prof(5, 2)
prof.set_hours(50)
print(prof.salary())

输出结果:

6300
7250
8650
定义一个抽象基类教师类Teacher由教师类派生出讲师Lecturer、副教授类AProf、教授类Prof教师的工资由基本工资、课时费和津贴构成。假设讲师、副教授、教授的基本工资分别是800、900、1000元课时费分别是每小时40、45、50元津贴由基本津贴和绩效津贴组成。基本津贴分别为1300、1800、2300讲师的绩效津贴为课时-基本课时2580副教授的绩效津贴为课时-基本课时30100+

原文地址: https://www.cveoy.top/t/topic/i9WU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录