On Apr 18, 11:55 am, "Mario Ceresa" <[EMAIL PROTECTED]> wrote: > Hello everybody: > I'd like to use the pickle module to save the state of an object so to > be able to restore it later. The problem is that it holds a list of > other objects, say numbers, and if I modify the list and restore the > object, the list itself is not reverted to the saved one, but stays > with one element deleted. > An example session is the following: > > Data is A [1, 2, 3, 4] > saving a with pickle > Deleting an object: del a[3] > Now data is A [1, 2, 3] > Oops! That was an error: can you please recover to the last saved data? > A [1, 2, 3] #### I'd like to have here A[1,2,3,4]!!!!!! > > Is it the intended behavior for pickle? if so, are there any way to > save the state of my object? > > Code follows > ----------------------- > class A(object): > objects = [] > ----------------------- > then I run the code: > --------------------------------------- > import pickle > from core import A > > a = A() > > for i in [1,2,3,4]: > a.objects.append(i) > > savedData = pickle.dumps(a) > print "Saved data is ",a > print "Deleting an object" > del a.objects[3] > print a > print "Oops! This was an error: can you please recover the last saved data?" > > print pickle.loads(savedData) > -------------------------------------------- > > Thank you for any help! > > Mario
The problem is that the way you define 'objects', it is an attribute of the A *class*, not the instance you create. Change the A class to: class A(object): def __init__(self): self.objects = [] and rerun it; it should now work as you intended. HTH, George -- http://mail.python.org/mailman/listinfo/python-list