So when you make the change to the attritutes of objects, it will change other attributes in other copied objects.
This is what a copy is. I think you may want separate instances of the class.
class some_class:
def __init__(self, msg):
print msg
self.var=0
if __name__== "__main__":
class_list=[some_class("test "+str(x)) for x in range(0, 2)]
print "two different classes...see"
for j in range(0, 2):
print " id for", j, id(class_list[j])
class_list[0].var=1
class_list[1].var=2
print "first var=%d but second var=%d" % (class_list[0].var, class_list[1].var)
For the time being, __always__ print the class id's during testing. It is possible to think you have 2 instances of the class when you instead have two pointers to the same class.
Edit: If this in not what you want, post again with more detail on what result you want to achieve.