Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- employees = [
- {
- 'name': 'Tom Hanks',
- 'salary': 200,
- 'paid': 'hourly',
- 'type': 'freelance',
- },{
- 'name': 'Roger Banks',
- 'salary': 6400,
- 'paid': 'monthly',
- 'type': 'internal',
- },{
- 'name': 'Nikola Tesla',
- 'salary': 960000,
- 'paid': 'yearly',
- 'type': 'freelance'
- },{
- 'name': 'Albert Einstein',
- 'salary': 1344000,
- 'paid': 'yearly',
- 'type': 'internal',
- },{
- 'name'
- }
- ]
- class Employee:
- def __init__(self, name, salary, paid, employee_type):
- self.name = name
- self.salary = salary
- self.paid = paid
- self.type = employee_type
- def _get_salary_per_year(self):
- year_salary = 0
- # Asume 160 hours a month and 12 months per year of work
- if self.paid == 'hourly':
- year_salary = self.salary * 8 * 5 * 30 * 12
- if self.paid == 'monthly':
- year_salary = self.salary * 12
- if self.paid == 'yearly':
- year_salary = self.salary
- return year_salary
- def get_salary_str(self):
- return '{} earns: {} per year'.format(self.name, self._get_salary_per_year())
- class InternalEmployee(Employee):
- def _get_salary_per_year(self):
- year_salary = 0
- # Asume 160 hours a month and 12 months per year of work
- if self.paid == 'hourly':
- year_salary = self.salary * 8 * 5 * 30 * 12
- if self.paid == 'monthly':
- year_salary = self.salary * 12
- if self.paid == 'yearly':
- year_salary = self.salary
- return year_salary - (year_salary * 0.15) # internals gets retained 15% of year income
- class FreelanceEmployee(Employee):
- def _get_salary_per_year(self):
- year_salary = 0
- # Asume 160 hours a month and 12 months per year of work
- if self.paid == 'hourly':
- year_salary = self.salary * 8 * 5 * 30 * 12
- if self.paid == 'monthly':
- year_salary = self.salary * 12
- if self.paid == 'yearly':
- year_salary = self.salary
- if year_salary > 10000:
- return year_salary - (year_salary * 0.3) # frelance gets retained 30% of year income
- else:
- return year_salary # low income freelance dont apply for retentions
- # Main program, return a list of salaries
- for employee in employees:
- employee_instance = Employee(employee['name'], employee['salary'], employee['paid'], employee['type'])
- ## Make use of the Factory Pattern
- if employee_instance.type == "internal":
- new_instance = InternalEmployee(employee['name'], employee['salary'], employee['paid'], employee['type'])
- print(new_instance.get_salary_str())
- if employee_instance.type == "freelance":
- new_instance = FreelanceEmployee(employee['name'], employee['salary'], employee['paid'], employee['type'])
- print(new_instance.get_salary_str())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement