Il 2005-12-07, Alex Martelli <[EMAIL PROTECTED]> ha scritto: > I can't reproduce the infinite recursion you observe, by merging said > recipe and your definition of class Test, w/Python 2.4.2 on Mac OS 10.4.
It seemed that the problem arose because I was not using super() in a new style class based hierarchy. class Test(object): __metaclass__ = LogTheMethods logMatch = '.*' def __init__(self, foo): self.foo = foo def test(self): return "test" class TestChild(Test): def __init__(self): # with super this works Test.__init__(self, "foo") def test(self): return "child" d = {'test': Test, 'child': TestChild} class MainTest(object): __metaclass__ = LogTheMethods logMatch = '.*' def create_test(self, key): return d[key]() if __name__ == '__main__': l = MainTest() print l.create_test("child").test() look in TestChild's __init__(). Not using super() fails with a """ File "/home/rhymes/downloads/simple_logger.py", line 55, in __init__ Test.__init__(self, "foo") File "/home/rhymes/downloads/simple_logger.py", line 24, in _method returnval = getattr(self,'_H_%s' % methodname)(*argl,**argd) TypeError: __init__() takes exactly 1 argument (2 given) """ In my project I'm doing deeply nested recursion things and it exceeds the maximum recursion limit for this problem this way. I don't get to fully work the metaclass anyway for other weird reasons (using super() I lose an attribute around?!) I'm gonna fix this. -- Lawrence - http://www.oluyede.org/blog "Anyone can freely use whatever he wants but the light at the end of the tunnel for most of his problems is Python" -- http://mail.python.org/mailman/listinfo/python-list