【发布时间】:2021-12-27 22:57:02
【问题描述】:
下面是我的代码:
class Person():
def __init__(self,name):
self.name=name
self.pet=None
def print_name(self):
print(f"The person's name is {self.name}")
class Employee(Person):
raise_amt=1.04
def __init__(self,name,salary):
super(Employee,self).__init__(name)
self.salary=salary
def apply_raise(self):
self.salary=int(self.salary*self.raise_amt)
class Manager(Person):
def __init__(self,name,salary,employees=None):
super().__init__(name)
self.salar=salary
if employees==None:
self.employees=[]
else:
self.employees=employees
def add_emp(self,emp):
if emp not in self.employees:
self.employees.append(emp)
def print_emps(self):
for emp in self.employees:
emp.print_name()
当我尝试使用以下代码运行程序时,会弹出错误。
frank=Employee("Frank",120000)
john=Employee("John",10000)
sean=Manager("Sean",20000,frank)
sean.add_emp(john)
sean.print_emps()
我收到的错误是TypeError: argument of type 'Employee' is not iterable。
但是,当我将方括号放在[frank] 周围时,错误就消失了。
你能帮我理解原因吗?
【问题讨论】:
-
你用一个 frank 的员工列表初始化 Manager,但 frank 不是一个列表,它是一个员工。
-
一个 Employee 确实是不可迭代的。一个列表是。
-
附注,请使用
if employees is None而不是==- relevant question