I have a parent class and two child class. I can create one object from any class my program run without Error. But when use add_emp
method of Manager class, objects added to emp list but when use print_emp
method objects that was add to list not return!!!!
class Emplyee:
increaspay = 1.09
def __init__(self, fname, lname, email,pay):
self.fname = fname
self.lname = lname
self.email = email
self.pay = pay
def Fullname(self):
print(f'{self.fname} {self.lname}')
def Applypay(self):
print(f'NewPay = {int(self.pay*Emplyee.increaspay)}')
class Developer(Emplyee):
def __init__(self, fname, lname, email, pay, lang):
super().__init__(fname, lname, email, pay)
self.lang = lang
class Manager(Emplyee):
def __init__(self, fname, lname, email, pay, emps=None):
super().__init__(fname, lname, email, pay)
if emps is None:
self.emps = []
else:
self.emps = emps
def add_emp(self, emp):
if emp not in self.emps:
self.emps.append(emp)
def remove_emp(self, emp):
if emp in self.emps:
self.emps.remove(emp)
def print_emp(self):
for emp in self.emps:
return (emp.Fullname())
Try return [emp.Fullname() for emp in self.emps]
.
In print_emp(self):
clause of your code, python loops over self.emps
. That is, it first sets emps
to be the first item of self.emps
. So emp.Fullname()
initially is the name of the first employee. Now when python sees return
, it returns this emp.Fullname()
, and just finishes the method. This is why your code returns only the name of the first employee.