我正在尝试创建一个 Python 脚本,它可以打开几个数据库并比较它们的内容。在创建这个脚本的过程中,我在创建一个列表时遇到了一个问题,这个列表的内容是我创建的对象。
我已经简化了这个程序到它的骨架为这个张贴。首先,我创建一个新类,创建它的一个新实例,为它分配一个属性,然后将它写入一个列表。然后我给这个实例赋一个新值,并再次将它写入一个列表... ... 一次又一次... ..。
问题是,它总是相同的对象所以我只是改变了基本对象。当我读这个列表的时候,我会得到同一个对象的一遍又一遍的重复。
那么如何在循环中将对象写入列表呢?
这是我的简化代码
class SimpleClass(object):
pass
x = SimpleClass
# Then create an empty list
simpleList = []
#Then loop through from 0 to 3 adding an attribute to the instance 'x' of SimpleClass
for count in range(0,4):
# each iteration creates a slightly different attribute value, and then prints it to
# prove that step is working
# but the problem is, I'm always updating a reference to 'x' and what I want to add to
# simplelist is a new instance of x that contains the updated attribute
x.attr1= '*Bob* '* count
print "Loop Count: %s Attribute Value %s" % (count, x.attr1)
simpleList.append(x)
print '-'*20
# And here I print out each instance of the object stored in the list 'simpleList'
# and the problem surfaces. Every element of 'simpleList' contains the same attribute value
y = SimpleClass
print "Reading the attributes from the objects in the list"
for count in range(0,4):
y = simpleList[count]
print y.attr1
那么,我如何(追加、扩展、复制或其他) simpleList 的元素,使每个条目包含对象的不同实例,而不是所有指向同一个实例?