I had to implment total_pay() and total_payroll can you check if…
Question Answered step-by-step I had to implment total_pay() and total_payroll can you check if… I had to implment total_pay() and total_payrollcan you check if there is any error and fix it? “””Prep 3 Synthesize=== CSC148 Summer 2022 ===Department of Mathematical and Computational Sciences,University of Toronto Mississauga=== Module Description ===This module contains an illustration of *inheritance* through an abstractEmployee class that defines a common interface for all of its subclasses.”””from datetime import dateclass Employee: “””An employee of a company. This is an abstract class. Only child classes should be instantiated. === Public attributes === id_: This employee’s ID number. name: This employee’s name. “”” id_: int name: str def __init__(self, id_: int, name: str) -> None: “””Initialize this employee. Note: This initializer is meant for internal use only; Employee is an abstract class and should not be instantiated directly. “”” self.id_ = id_ self.name = name def get_monthly_payment(self) -> float: “””Return the amount that this Employee should be paid in one month. Round the amount to the nearest cent. “”” raise NotImplementedError def pay(self, pay_date: date) -> None: “””Pay this Employee on the given date and record the payment. (Assume this is called once per month.) “”” payment = self.get_monthly_payment() print(f’An employee was paid {payment} on {pay_date}.’) def total_pay(self) -> float: “””Return the total amount of pay this Employee has received. >>> e = SalariedEmployee(14, ‘Gilbert the cat’, 1200.0) >>> e.pay(date(2018, 6, 28)) An employee was paid 100.0 on 2018-06-28. >>> e.pay(date(2018, 7, 28)) An employee was paid 100.0 on 2018-07-28. >>> e.pay(date(2018, 8, 28)) An employee was paid 100.0 on 2018-08-28. >>> e.total_pay() 300.0 “”” payment = self.get_monthly_payment() self.total_payment =+ payment print(self.total_payment) passclass SalariedEmployee(Employee): “””An employee whose pay is computed based on an annual salary. === Public attributes === salary: This employee’s annual salary === Representation invariants === – salary >= 0 “”” id_: int name: str salary: float def __init__(self, id_: int, name: str, salary: float) -> None: “””Initialize this salaried Employee. >>> e = SalariedEmployee(14, ‘Fred Flintstone’, 5200.0) >>> e.salary 5200.0 “”” # Note that to call the superclass’ initializer, we need to use the # full name ‘__init__’. This is the only time we write ‘__init__’ # explicitly. Employee.__init__(self, id_, name) self.salary = salary def get_monthly_payment(self) -> float: “””Return the amount that this Employee should be paid in one month. Round the amount to the nearest cent. >>> e = SalariedEmployee(99, ‘Mr Slate’, 120000.0) >>> e.get_monthly_payment() 10000.0 “”” return round(self.salary / 12, 2)class HourlyEmployee(Employee): “””An employee whose pay is computed based on an hourly rate. === Public attributes === hourly_wage: This employee’s hourly rate of pay. hours_per_month: The number of hours this employee works each month. === Representation invariants === – hourly_wage >= 0 – hours_per_month >= 0 “”” id_: int name: str hourly_wage: float hours_per_month: float def __init__(self, id_: int, name: str, hourly_wage: float, hours_per_month: float) -> None: “””Initialize this HourlyEmployee. >>> barney = HourlyEmployee(23, ‘Barney Rubble’, 1.25, 50.0) >>> barney.hourly_wage 1.25 >>> barney.hours_per_month 50.0 “”” Employee.__init__(self, id_, name) self.hourly_wage = hourly_wage self.hours_per_month = hours_per_month def get_monthly_payment(self) -> float: “””Return the amount that this Employee should be paid in one month. Round the amount to the nearest cent. >>> e = HourlyEmployee(23, ‘Barney Rubble’, 1.25, 50.0) >>> e.get_monthly_payment() 62.5 “”” monthly_total = self.hours_per_month * self.hourly_wage return round(monthly_total, 2)class Company: “””A company with employees. We use this class mainly as a client for the various Employee classes we defined in employee. === Attributes === employees: the employees in the company. “”” employees: list[Employee] def __init__(self, employees: list[Employee]) -> None: self.employees = employees def pay_all(self, pay_date: date) -> None: “””Pay all employees at this company.””” for employee in self.employees: employee.pay(pay_date) def total_payroll(self) -> float: “””Return the total of all payments ever made to all employees. >>> my_corp = Company([ SalariedEmployee(24, ‘Gilbert the cat’, 1200.0), HourlyEmployee(25, ‘Chairman Meow’, 500.25, 1.0)]) >>> my_corp.pay_all(date(2022, 6, 28)) An employee was paid 100.0 on 2022-06-28. An employee was paid 500.25 on 2022-06-28. >>> my_corp.total_payroll() 600.25 “”” total_payroll_payment = 0.0 for i in self.employees: total_payroll_payment += i.total_pay() print(total_payroll_payment) passif __name__ == ‘__main__’: import doctest doctest.testmod() # Remember: you’ll need to *run this file* to actually get the lines below # to run. This is different than just running doctests. # To run this file in PyCharm, right-click in the file and select # “Run…”, and then select “prep3” from the menu that appears. # DON’T select “Doctests in prep3”, as that command will not actually # run this file, but instead only run its doctests. import python_ta python_ta.check_all(config={ ‘extra-imports’: [‘datetime’], ‘allowed-io’: [‘pay’] }) Computer Science Engineering & Technology Python Programming CS 148 Share QuestionEmailCopy link Comments (0)


