pickling subclasses of dict/list
Jp Calderone
exarkun at divmod.com
Sun Jul 4 17:19:05 EDT 2004
Edward Loper wrote:
> I'm having trouble pickling subclasses of dict when they contain cycles.
> In particular:
>
> >>> import pickle
> >>> class D(dict): pass
> >>> d = D()
> >>> d[1] = d # add a cycle.
> >>> print d
> {1: {...}}
> >>> pickle.dump(d, open('d.pickle', 'w'))
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "/tmp/python-rSB6hN", line 6, in ?
> pickle.dump(d, open('d.pickle', 'w'))
> File "/usr/lib/python2.3/pickle.py", line 1382, in dump
> Pickler(file, protocol, bin).dump(obj)
> [...]
> File "/usr/lib/python2.3/pickle.py", line 414, in save_reduce
> save(func)
> RuntimeError: maximum recursion depth exceeded
Try using protocol 2.
Jp
More information about the Python-list
mailing list