[Tutor] setstate trouble when unpickling
rspil
robert.spilleboudt at skynet.be
Sun Jan 27 18:00:26 CET 2008
I load a "cellule" with
self.cellule=pickle.load(prjfile)
Within the class "cellule" I use this method to add an attribute "note"
,with success:
def __setstate__(self, state):
#20080127 ajoute note
if 'note' not in state:
self.note="***"
self.__dict__.update(state)
self.note="***" is the new attribute in __init__
I checked with a debug: after the pickle.load the class instance is created
without the attribute "note". The method __setstate__ is called and the new
attribute is added.
With python 2.5.1
Robert
Jeff Peery-2 wrote:
>
> Hello,
>
> I've got a fairly simple class instance that I'm pickling. I'm using
> setstate to update the instance when I unpickle. Although the setstate
> doesn't seem to be called upon unpickling... here's an example, if anyone
> see's what I'm doing wrong, please let me know. Thanks!
>
> so I say start out with this class:
>
> class dog:
> def __init__(self):
> self.num_legs = 4
>
> then I pickle the instance of:
> sparky = dog()
>
> then I update my dog class to:
> class dog:
> def __init__(self):
> self.hair_color = 'brown'
> self.num_legs = 4
>
> def __setstate__(self, d):
> if 'hair_color' not in d:
> d['hair_color'] = 'brown'
> self.__dict__.update(d)
> print 'did this work?'
>
> Now when I unpickle the original pickled object sparky I would hope to
> see 'did this work' and I would also hope that sparky would have updated
> to have the attribute 'hair_color' but nothing of the sort happens. if
> just unpickles sparky without updating the attributes as I was hoping.
>
> Thanks!
>
> Jeff
>
>
>
>
> ---------------------------------
> Never miss a thing. Make Yahoo your homepage.
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
--
View this message in context: http://www.nabble.com/setstate-trouble-when-unpickling-tp15082091p15121172.html
Sent from the Python - tutor mailing list archive at Nabble.com.
More information about the Tutor
mailing list