某公司雇员(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)