【问题标题】:How to return by for loop python?如何通过for循环python返回?
【发布时间】: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


【解决方案1】:

试试return [emp.Fullname() for emp in self.emps]

在代码的print_emp(self): 子句中,python 循环遍历self.emps。也就是说,它firstemps 设置为self.emps 的第一项。所以emp.Fullname() 最初是第一个员工的名字。现在当 python 看到return 时,它会返回这个emp.Fullname(),然后完成方法。这就是为什么您的代码只返回第一个员工的姓名。

【讨论】:

  • 非常感谢。你的代码对我有用。谢谢
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 2019-07-31
  • 2021-12-17
  • 1970-01-01
相关资源
最近更新 更多