[Python-Dev] python2.7 infinite recursion when loading pickled object

Terry Reedy tjreedy at udel.edu
Mon Aug 11 13:28:44 CEST 2014


On 8/11/2014 5:10 AM, Schmitt Uwe (ID SIS) wrote:

Python usage questions should be directed to python-list, for instance.

> I discovered a problem using cPickle.loads from CPython 2.7.6.

The problem is your code having infinite recursion. You only discovered 
it with pickle.


> The last line in the following code raises an infinite recursion
>
>      class T(object):
>
>          def __init__(self):
>              self.item = list()
>
>          def __getattr__(self, name):
>              return getattr(self.item, name)

This is a (common) bug in your program.  __getattr__ should call 
self.__dict__(name) to avoid the recursion.

-- 
Terry Jan Reedy



More information about the Python-Dev mailing list