-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy path08class.py
More file actions
59 lines (43 loc) · 1.5 KB
/
08class.py
File metadata and controls
59 lines (43 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from abc import ABC, abstractmethod
# Base class (Abstract)
class Employee(ABC):
def __init__(self, name, employee_id):
self.name = name
self.employee_id = employee_id
@abstractmethod
def calculate_salary(self):
pass
def get_details(self):
return f"ID: {self.employee_id}, Name: {self.name}"
# Regular full-time employee
class FullTimeEmployee(Employee):
def __init__(self, name, employee_id, monthly_salary):
super().__init__(name, employee_id)
self.monthly_salary = monthly_salary
def calculate_salary(self):
return self.monthly_salary
# Manager inherits from FullTimeEmployee
class Manager(FullTimeEmployee):
def __init__(self, name, employee_id, monthly_salary, bonus):
super().__init__(name, employee_id, monthly_salary)
self.bonus = bonus
def calculate_salary(self):
return self.monthly_salary + self.bonus
# Developer paid hourly
class Developer(Employee):
def __init__(self, name, employee_id, hourly_rate, hours_worked):
super().__init__(name, employee_id)
self.hourly_rate = hourly_rate
self.hours_worked = hours_worked
def calculate_salary(self):
return self.hourly_rate * self.hours_worked
#Using the system
employees = [
FullTimeEmployee("Alice", 101, 5000),
Manager("Bob", 102, 7000, 2000),
Developer("Charlie", 103, 50, 160)
]
for emp in employees:
print(emp.get_details())
print("Salary:", emp.calculate_salary())
print("-" * 30)