Dear Jerry and George: it works like a charm! I always thought that the first way was a quicker alternative to defining the init method... shame on me!
>From now on I'll read the list every day repeating to myself: "Premature optimization is the root of all evil", "Premature optimization is the root of all evil", .... :) Thanks a lot, Mario On Fri, Apr 18, 2008 at 8:00 PM, George Sakkis <[EMAIL PROTECTED]> wrote: > 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 > -- http://mail.python.org/mailman/listinfo/python-list