Python附加类实例列表?

时间:2018-02-14 17:50:50

标签: python

我试图理解如何将类的实例附加到Python中的列表中,我认为我这样做的方式很糟糕。

对于我的测试代码设置,我在代码的整个生命周期中跟踪一个对象。假设这个对象是一个人

class man_obj():
    def __init__(self):
        self.name = "name"
        self.height = 0.0
        self.weight = 0.0
        self.action = "action"

我创建了一个男人对象的实例来跟踪他在我的代码中的生活

man_inst = man_obj();

然后我填充了让这个家伙出现的属性

man_inst.name = "Adam"
man_inst.height = 1.0
man_inst.weight = 1.0
man_inst.action = "looks around"

现在我想在列表中跟踪他

man_list = [];

现在我接下来做的事情感觉不对,但我猜它有效。

record_man = copy.deepcopy(man_inst);
man_list.append(record_man);

如果亚当做了一些不同的事情,就像决定在长假后重新恢复状态一样

man_inst.action = "exercise"
man_inst.weight = 0.9

现在记录他的所作所为我重新使用deepcopy并附加到列表

record_man = copy.deepcopy(man_inst);
man_list.append(record_man);

我不认为这是正确的方法,有更好的方法吗?

这是代码

import copy

class man_obj():
    def __init__(self):
        self.name = "name"
        self.height = 0.0
        self.weight = 0.0;
        self.action = "action";


man_inst = man_obj();


man_inst.name = "Adam"
man_inst.height = 1.0
man_inst.weight = 1.0
man_inst.action = "looks around"

man_list = [];

record_man = copy.deepcopy(man_inst);
man_list.append(record_man);

man_inst.action = "exercise"
man_inst.weight = 0.9               

record_man = copy.deepcopy(man_inst);
man_list.append(record_man);

print("name\theight\tweight\taction")           
for x in range(0, len(man_list)):
    print(man_list[x].name + "\t" + str(man_list[x].height)
    + "\t" + str(man_list[x].weight) + "\t"+ str(man_list[x].action))

这是结果

name    height  weight  action
Adam    1.0     1.0     looks around
Adam    1.0     0.9     exercise

0 个答案:

没有答案