[Python-Dev] python2.7 infinite recursion when loading pickled object
Peter Otten
__peter__ at web.de
Mon Aug 11 13:40:13 CEST 2014
More information about the Python-Dev mailing list
Mon Aug 11 13:40:13 CEST 2014
- Previous message: [Python-Dev] python2.7 infinite recursion when loading pickled object
- Next message: [Python-Dev] python2.7 infinite recursion when loading pickled object
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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.
- Previous message: [Python-Dev] python2.7 infinite recursion when loading pickled object
- Next message: [Python-Dev] python2.7 infinite recursion when loading pickled object
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list