There are several error and logic that don't work(like add,remove).
Here fixing so most run,the logic you have to look at again.
Do small step,and test your code at each step,than some of this mess could be avoided
Here fixing so most run,the logic you have to look at again.
Do small step,and test your code at each step,than some of this mess could be avoided
class Employee: raise_amt = 1.04 def __init__(self, first, last, pay): self.first = first self.last = last self.email = '{}.{}@email.com'.format(first, last) self.pay = pay @property def fullname(self): return '{} {}'.format(self.first, self.last) @property def apply_raise(self): self.pay = int(self.pay * self.raise_amt) class Developer(Employee): raise_amt = 1.1 def __init__(self, first, last, pay, prog_lang): super().__init__(first, last, pay) 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, foo): for emp in self.employees: if emp.last == foo: # Fix so it print something print(emp.last) def print_emps(self): for emp in self.employees: print('--> {} {}'.format(emp.first, emp.last)) dev_1 = Developer('Corey', 'Schafer', 50000, 'Python') dev_2 = Developer('Test', 'Employee', 60000, 'Java') mgr_1 = Manager('Sue', 'Smith', 90000, [dev_1])Test:
>>> dev_1.fullname 'Corey Schafer' >>> dev_1.prog_lang 'Python' >>> dev_1.pay 50000 >>> dev_1.apply_raise >>> dev_1.pay 55000 >>> mgr_1.print_emps() --> Corey Schafer >>> mgr_1.remove_emp('Schafer') Schafer