Re: Pickle problem

2008-04-21 Thread Mario Ceresa
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


Pickle problem

2008-04-18 Thread Mario Ceresa
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
-- 
http://mail.python.org/mailman/listinfo/python-list