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)? From reading the documentation it seems that classes defined at the top level of a module can be pickled, but I'm stymied here. Thanks a bunch! Lex Example: ###begin### #define Hash from collections import defaultdict class Hash(defaultdict): def __init__(self): defaultdict.__init__(self, Hash) #build a Hash object a = Hash() a[3][4][5] = 6 a['x']['y'] = 'nil' #now test try to pickle import pickle pk = pickle.dumps(a) #OK new_a = pickle.loads(pk) #dies! ###end### The pk object won't load, giving this error on my machine: >>> new_a = pickle.loads(pk) #dies! Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python25\lib\pickle.py", line 1374, in loads return Unpickler(file).load() File "C:\Python25\lib\pickle.py", line 858, in load dispatch[key](self) File "C:\Python25\lib\pickle.py", line 1133, in load_reduce value = func(*args) TypeError: __init__() takes exactly 1 argument (2 given) _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor