考虑我有一个名单列表,我想在列表中为这些个人名称创建对象。代码如下:
class employee:
def __init__(self, name):
self.name = name
def display(self):
print(self.name)
names = ["john", "mike", "soniya"]
for i in range(0, len(names)):
e = employee(names[i])
for i in range(0, len(names)):
e.display()
代码执行时,它只显示最后一个对象的名称而不是单个对象名称。这些物体是否被覆盖了?那么使用循环创建对象的方法是什么,并存储它们各自的数据并再次取回它?
答案 0 :(得分:2)
是的,对象被覆盖了。 return false
仅指循环完成后的最后一个对象。尝试:
e
答案 1 :(得分:1)
当然,你要重新分配相同的变量三次:
for i in range(0, len(names)):
e = employee(names[i])
如果您想存储一些对象并同时访问它们,请使用容器list
,例如:
e = []
for i in range(0, len(names)):
e.append(employee(names[i]))
答案 2 :(得分:0)
试试这个
class employee:
def __init__(self, name):
self.name = name
def display(self):
print(self.name)
names = ["john", "mike", "soniya"]
emplist=[]
for i in range(0, len(names)):
e = employee(names[i])
emplist.append(e)
for i in range(0, len(emplist)):
emplist[i].display()
答案 3 :(得分:0)
除了上述内容之外,我也更愿意做以下事情;
for name in names:
employee_list.append(name)
因此无需通过索引访问名称。 印刷也是如此
for emp in employee_list:
emp.display()