【发布时间】:2021-05-09 01:31:25
【问题描述】:
我有一个父类和两个子类。我可以从我的程序运行时没有错误的任何类中创建一个对象。但是当使用Manager类的add_emp方法时,对象添加到emp列表中但是当使用print_emp方法时添加到列表中的对象不返回!!!
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())
【问题讨论】:
-
你想让它做什么?您要返回所有全名的列表吗?你可以做
return list(emp.Fullname() for emp in self.emps)或者,你可以保留你的循环,并将return更改为yield。 -
我在 print_emp 循环中编写循环以返回 emps 列表中的所有 emp,但不返回列表的所有 mmember,只返回列表的第一个 mmember!
-
我很清楚它的作用。我问的是你想要的。
标签: python inheritance return