数据被覆盖在对象上

时间:2017-04-18 19:56:50

标签: python oop

考虑我有一个名单列表,我想在列表中为这些个人名称创建对象。代码如下:

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()

代码执行时,它只显示最后一个对象的名称而不是单个对象名称。这些物体是否被覆盖了?那么使用循环创建对象的方法是什么,并存储它们各自的数据并再次取回它?

4 个答案:

答案 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()