Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. employees = [
  2. {
  3. 'name': 'Tom Hanks',
  4. 'salary': 200,
  5. 'paid': 'hourly',
  6. 'type': 'freelance',
  7. },{
  8. 'name': 'Roger Banks',
  9. 'salary': 6400,
  10. 'paid': 'monthly',
  11. 'type': 'internal',
  12. },{
  13. 'name': 'Nikola Tesla',
  14. 'salary': 960000,
  15. 'paid': 'yearly',
  16. 'type': 'freelance'
  17. },{
  18. 'name': 'Albert Einstein',
  19. 'salary': 1344000,
  20. 'paid': 'yearly',
  21. 'type': 'internal',
  22. },{
  23. 'name'
  24. }
  25. ]
  26.  
  27. class Employee:
  28.  
  29. def __init__(self, name, salary, paid, employee_type):
  30. self.name = name
  31. self.salary = salary
  32. self.paid = paid
  33. self.type = employee_type
  34.  
  35. def _get_salary_per_year(self):
  36. year_salary = 0
  37. # Asume 160 hours a month and 12 months per year of work
  38. if self.paid == 'hourly':
  39. year_salary = self.salary * 8 * 5 * 30 * 12
  40. if self.paid == 'monthly':
  41. year_salary = self.salary * 12
  42. if self.paid == 'yearly':
  43. year_salary = self.salary
  44. return year_salary
  45.  
  46. def get_salary_str(self):
  47. return '{} earns: {} per year'.format(self.name, self._get_salary_per_year())
  48.  
  49. class InternalEmployee(Employee):
  50.  
  51. def _get_salary_per_year(self):
  52. year_salary = 0
  53. # Asume 160 hours a month and 12 months per year of work
  54. if self.paid == 'hourly':
  55. year_salary = self.salary * 8 * 5 * 30 * 12
  56. if self.paid == 'monthly':
  57. year_salary = self.salary * 12
  58. if self.paid == 'yearly':
  59. year_salary = self.salary
  60. return year_salary - (year_salary * 0.15) # internals gets retained 15% of year income
  61.  
  62. class FreelanceEmployee(Employee):
  63.  
  64. def _get_salary_per_year(self):
  65. year_salary = 0
  66. # Asume 160 hours a month and 12 months per year of work
  67. if self.paid == 'hourly':
  68. year_salary = self.salary * 8 * 5 * 30 * 12
  69. if self.paid == 'monthly':
  70. year_salary = self.salary * 12
  71. if self.paid == 'yearly':
  72. year_salary = self.salary
  73. if year_salary > 10000:
  74. return year_salary - (year_salary * 0.3) # frelance gets retained 30% of year income
  75. else:
  76. return year_salary # low income freelance dont apply for retentions
  77.  
  78.  
  79. # Main program, return a list of salaries
  80. for employee in employees:
  81. employee_instance = Employee(employee['name'], employee['salary'], employee['paid'], employee['type'])
  82. ## Make use of the Factory Pattern
  83. if employee_instance.type == "internal":
  84. new_instance = InternalEmployee(employee['name'], employee['salary'], employee['paid'], employee['type'])
  85. print(new_instance.get_salary_str())
  86. if employee_instance.type == "freelance":
  87. new_instance = FreelanceEmployee(employee['name'], employee['salary'], employee['paid'], employee['type'])
  88. print(new_instance.get_salary_str())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement