我试图理解如何将类的实例附加到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