kost BebiX wrote:
Sorry for top posting, didn't know about that) I'm quote new to posting to
mailing lists.
Well, actually the code you showed doesn't work)
class A(object):
.. def __init__(self):
.. self.d = {}
.. def __getattr__(self, key):
.. try:
.. return self.d[key]
.. except KeyError:
.. raise AttributeError
from copy import deepcopy
a = A()
deepcopy(a)
Exception RuntimeError: 'maximum recursion depth exceeded while calling a Python
object' in <type 'exceptions.AttributeError'> ignored
Exception RuntimeError: 'maximum recursion depth exceeded while calling a Python
object' in <type 'exceptions.AttributeError'> ignored
0: <__main__.A object at 0xda0250>
It does work as I pasted it with python2.5.
recursion problems often occur when overriding __getattr__ or
__getattribute__ *AND* accessing self attributes using self.attr form
inside the method.
try to change
return self.d[key]
into
return object.__getattribute__(self, 'd')[key]
Just speculating though, I cannot test since I don't reproduce the problem.
JM
--
http://mail.python.org/mailman/listinfo/python-list