unpickling Set as set

Gabriel G gabrielg_laburando at yahoo.com.ar
Wed Nov 8 13:27:45 EST 2006


At Wednesday 8/11/2006 05:26, George Sakkis wrote:

>Or you may have this done automatically by hacking the Set class:
>
>from sets import Set
>import cPickle as pickle
>
>Set.__reduce__ = lambda self: (set, (self._data,))
>
>s = Set([1,2,3])
>x = pickle.dumps(s)
>print pickle.loads(x)
>
>
>This doesn't work though if you have already pickled the Set before
>replacing its __reduce__, so it may not necessarily be what you want.
>If there is a way around it, I'd like to know it.

Perhaps registering a suitable reduce function in the copy_reg module.
If the sets were pickled alone, and it's not too much trouble, using: 
a_set = set(a_set) just after unpickling may be enough.
And if they were instance attributes, __setstate__ on the class can 
do the conversion.


-- 
Gabriel Genellina
Softlab SRL 

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis! 
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar



More information about the Python-list mailing list