多态的运用之练习加油

某公司雇员(Employee)包括经理(Manager),技术人员(Technician)和销售员(Salesman)。以Employee类为基类派生出Manager,Technician和Salesman类;Employee类的属性包括姓名、职工号、工资级别,底薪。
操作包括月薪计算方法(pay()),该方法要求输入请假天数和日薪,底薪扣去应扣工资后,得出实发基本工资。

a.Technician类派生的属性有每小时附加酬金和当月工作时数,及研究完成进度系数。业绩工资为三者之积。也包括同名的pay()方法,工资总额为基本工资加业绩工资。
b.Salesman类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的pay()方法,工资总额为基本工资加业绩工资。
c.Manager类派生属性有固定奖金额和业绩系数,业绩工资为两者之积。工资总额也为基本工资加业绩工资。
编程实现工资管理。

求帮忙!

class Employee():
    def __init__(self, name, id, grade, base):
        self.name=name
        self.id=id
        self.grade=grade
        self.base=base
    def pay(self, leave, daysalary):
        return self.base - leave*daysalary
    
class Technician(Employee):
    def __init__(self, name, id, grade, base, hoursalary, hours, progress):
        super().__init__(name, id, grade, base)
        self.hs = hoursalary
        self.hrs = hours
        self.pgs = progress
    def pay(self, leave, daysalary):
        return self.hs*self.hrs*self.pgs+super().pay(leave, daysalary)

class Salesman(Employee):
    def __init__(self, name, id, grade, base, revenue, commitment):
        super().__init__(name, id, grade, base)
        self.rv = revenue
        self.cmt = commitment
    def pay(self, leave, daysalary):
        return self.rv*self.cmt+super().pay(leave, daysalary)

class Manager(Employee):
    def __init__(self, name, id, grade, base, bonus, ratio):
        super().__init__(name, id, grade, base)
        self.bonus = bonus
        self.ratio = ratio
    def pay(self, leave, daysalary):
        return self.bonus*self.ratio+super().pay(leave, daysalary)