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