Python-如何创建一个接收任意数量的args并返回所有args列表的类方法



我创建了一个名为Manager的类,作为Employee的子类,并试图创建一个常规方法,将员工添加到经理的监督中。然而,我希望这个方法可以接收任意数量的参数(员工数量(,所以我在定义方法时添加了*:

class Employee:
def __init__(self, first, last, pay):
self.first = first
self.last = last
self.pay = pay
# Returns employees fullname
def fullname(self):
return '{} {}'.format(self.first, self.last)

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):           # Accept any no. of args
if emp not in self.employees:
self.employees.append(emp)
def print_emps(self):              # Prints all employees' names
for emp in self.employees:
print('-->', emp.fullname())

当我运行代码addind-emps(emp_1,emp_2,emp_3(时,它们被添加了,但当打印它们的名称时,会出现一个错误:

emp_1 = Employee('Corey', 'Schafer', 50000)
emp_2 = Employee('Test', 'User', 60000)
mng_1 = Manager('Roger', 'Smith', 100000)
mng_1.add_emp(emp_1, emp_2)
mng_1.print_emps()
AttributeError: 'tuple' object has no attribute 'fullname'

如何输入尽可能多的参数作为列表,以便类的属性和方法对每个项都有效?

像这样更改add_emp方法:

def add_emp(self, *emps):           # Accept any no. of args
for emp in emps:
if emp not in self.employees:
self.employees.append(emp)

最新更新