Skip to content

Instantly share code, notes, and snippets.

@tolumide-ng
Created September 8, 2019 13:56
Show Gist options
  • Save tolumide-ng/2f3e4d30009a687d89a9a554dbdd1c6d to your computer and use it in GitHub Desktop.
Save tolumide-ng/2f3e4d30009a687d89a9a554dbdd1c6d to your computer and use it in GitHub Desktop.
class Employee:
num_of_emps = 0
raise_amt = 1.04
def __init__(self, first, last, pay):
self.first = first
self.last = last
self.email = first + '.' + last + '@example.com'
self.pay = pay
Employee.num_of_emps += 1
def fullname(self):
return '{} {}'.format(self.first, self.last)
def apply_raise(self):
self.pay = int(self.pay * self.raise_amt)
@classmethod
def set_raise_amount(cls, amount):
cls.raise_amt = amount
@classmethod
def from_string(cls, emp_str):
first, last, pay = emp_str.split('-')
return cls(first, last, pay)
@staticmethod
def is_workday(day):
if day.weekday() == 5 or day.weekday == 6:
return False
return True
def __repr__(self):
return "Employee('{}', '{}', '{}')".format(self.first, self.last, self.pay)
def __str__(self):
return '{} - {}'.format(self.fullname(), self.email)
#More dunder/magic methods
def __add__(self, other):
return self.pay + other.pay
def __len__(self):
return len(self.fullname())
# Method resolution order
class Developer(Employee):
raise_amt = 1.10
def __init__(self, first, last, pay, prog_lang):
super().__init__(first, last, pay)
# Employee.__init__(self, first, last, pay) MULTIPLE INHERITANCE
self.prog_lang = prog_lang
class Manager(Employee):
def __init__(self, first, last, pay, employees=None):
super().__init__(first, last, pay)
if employees is None:
self.employees = []
else:
self.employees = employees
def add_emp(self, emp):
if emp not in self.employees:
self.employees.append(emp)
def remove_emp(self, emp):
if emp in self.employees:
self.employees.remove(emp)
def print_emp(self):
for emp in self.employees:
print('==>', emp.fullname())
dev_1 = Employee('Corey', 'Schafer', 50000)
dev_2 = Employee('Test', 'Bran', 60000)
print(dev_1)
print(dev_1.__repr__())
# emp_str_1 = 'John-Doe-7000'
# emp_str_2 = 'Lara-Johnson-30000'
# emp_str_3 = 'John-Tatcher-9000'
# emp_str = Employee.from_string(emp_str_3)
# print(emp_str.email)
# dev_1 = Developer('Corey', 'Schafer', 50000, 'Python')
# dev_2 = Developer('Test', 'Bran', 60000, 'Java')
# mgr_1 = Manager('Tsue', 'Gina', 90000, [dev_1])
# print(mgr_1.email)
# mgr_1.print_emp()
# isinstance(mgr_1, Developer)
# isinstance(mgr_1, Manager)
# isinstance(mgr_1, Employee)
# issubclass(Manager, Employee)
# issubclass(Employee, Manager)
# print(mgr_1.prog_lang)
# print(help(Developer))
# print(help(Developer))
# import datetime
# my_date = datetime.date(2016, 6, 7)
# print(Employee.is_workday(my_date))
# Employee.set_raise_amount(1.05)
# print(Employee.raise_amt)
# print(emp_1.raise_amt)
# print(emp_2.raise_amt)
# print('I am here')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment