On Mon, Oct 27, 2008 at 11:40 PM, Lex Flagel <[EMAIL PROTECTED]> wrote: > I'm using a simple class called Hash, which I picked up from the following > site: > http://mail.python.org/pipermail/python-list/2007-August/453716.html > > I like using this Hash object for its convenience, but it won't > unpickle. Is there fix to the code example below (either the pickler > or the Hash object) that will get it to unpickle (pickle.loads)?
You have to override Hash.__reduce__(), the values returned by defaultdict.__reduce__() are not correct. http://docs.python.org/library/pickle.html#pickling-and-unpickling-extension-types This works. The result of calling __reduce__() is a tuple, hence the awkward code to build a new value: class Hash(defaultdict): def __init__(self): defaultdict.__init__(self, Hash) def __reduce__(self): r = defaultdict.__reduce__(self) # override __init__ args return (r[0], (), r[2], r[3], r[4]) Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor