You are on page 1of 3

#class Employee

class Employee:
def __init__(self, name, employee_id):
self._name = name
self._employee_id = employee_id

@property
def name(self):
return self._name

@name.setter
def name(self, name):
self._name = name

def display_info(self):
return f"Name: {self._name}"

@property
def employee_id(self):
return self._employee_id

@name.setter
def employee_id(self, employee_id):
self._employee_id = employee_id

def display_info(self):
return (f"Name: {self._name}"
f"Employee Id: {self._employee_id}")

class HourlyWorker(Employee):
def __init__(self, name, employee_id, hours_worked, hourly_rate):
super().__init__(name, employee_id)
self._hours_worked = hours_worked
self._hourly_rate = hourly_rate

@property
def hours_worked(self):
return self._hours_worked

@hours_worked.setter
def hours_worked(self, hours_worked):
self._hours_worked = hours_worked

@property
def hourly_rate(self):
return self._hourly_rate

@hourly_rate.setter
def hourly_rate(self, hourly_rate):
self._hourly_rate = hourly_rate

def calculate_payment(self):
return self._hours_worked * self._hourly_rate

def display_info(self):
return (f"HourlyWorker\n{super().display_info()}\n"
f"Hours Worked: {self._hours_worked}\n"
f"Hourly Rate: {self._hourly_rate}")
# CLASS PIECEWORKER
class PieceWorker(Employee):
def __init__(self, name, employee_id, pieces_completed, rate_per_piece):
super().__init__(name, employee_id)
self._pieces_completed = pieces_completed
self._rate_per_piece = rate_per_piece

@property
def pieces_completed(self):
return self._pieces_produced

@pieces_completed.setter
def pieces_produced(self, pieces_completed):
self._pieces_produced = pieces_completed

@property
def rate_per_piece(self):
return self._rate_per_piece

@rate_per_piece.setter
def rate_per_piece(self, rate_per_piece):
self._rate_per_piece = rate_per_piece

def calculate_payment(self):
return self._pieces_produced * self._rate_per_piece

def display_info(self):
return (f"PieceWorker\n{super().display_info()}\n"
f"Pieces Produced: {self._pieces_produced}\n"
f"Rate Per Piece: {self._rate_per_piece}")

class SalesEmployee(Employee):
def __init__(self,name, employee_id, sales_amount, commission_rate):
super().__init__(name, employee_id)
self._sales_amount = sales_amount
self._commission_rate = commission_rate
@property
def sales_amount(self):
return self._sales_amount

@sales_amount.setter
def sales_amount(self, sales_amount):
self._sales_amount = sales_amount

@property
def commission_rate(self):
return self._commission_rate
@commission_rate.setter
def commssion_rate(self, commission_rate):
self._commission_rate = commission_rate

def display_info(self):
return (f"Sales Amount: {self._sales_amount}\n"
f"Commission Rate: {self._commission_rate}%")
# CLASS HOURLYWORKER

# CLASS COMMISSIONWORKER
class CommissionWorker(SalesEmployee):
def __init__(self, name, employee_id, sales_amount,
commission_rate,base_salary):
super().__init__(name, employee_id,sales_amount, commission_rate)
self._base_salary = base_salary

@property
def base_salary(self):
return self._base_salary

@base_salary.setter
def sales_amount(self, sales_amount):
self._sales_amount = sales_amount

def calculate_payment(self):
return ((self._sales_amount * self._commission_rate) / 100) +
self._base_salary

def display_info(self):
return (f"CommissionWorker\n{super().display_info()}\n"
f"Base Salary: {self._sales_amount}\n")

# CLASS ENGINEERINGMANAGER

emp1 = HourlyWorker("Mickey", 5667, 8, 450)


emp2 = PieceWorker("Joel", 3445, 30, 50)
emp3 = CommissionWorker("Michelle", 2234, 400, .50, 500)

employees = [emp1, emp2, emp3 ]

for employee in employees:


print(employee.display_info())
print(f"Total Earnings: {employee.calculate_payment():.2f}\
n----------------------------------------------")

You might also like