[Python-Dev] python2.7 infinite recursion when loading pickled object (original) (raw)

Peter Otten __peter__ at web.de
Mon Aug 11 13:40:13 CEST 2014


Terry Reedy wrote:

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.

Read again. The OP tries to delegate attribute lookup to an (existing) attribute.

IMO the root cause of the problem is that pickle looks up dunder methods in the instance rather than the class.



More information about the Python-Dev mailing list