Wrapping method calls with metaclasses
Alex Martelli
aleax at mail.comcast.net
Tue Dec 6 23:06:02 EST 2005
Lawrence Oluyede <raims at dot.com> wrote:
> I've never used metaclasses in real life before and while searching through
> the online Cookbook I found this gorgeous example:
>
> "Wrapping method calls (meta-class example)"
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/198078
>
> What I want to do in my app is to log all method calls and seems that the
> metaclass example above do this fine but it fails when it's needed to
> instantiate the class I'm in in a method. So if I do:
>
> class Test(object):
> __metaclass__ = LogTheMethods
> def foo(self):
> return Test()
>
> this generate a Runtime Error cause recursion never stops :(
> Any hint to enhance the example?
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.
Can you please supply a minimal complete example, e.g. simplifying
function logthemethod to just emit s/thing to stdout etc, that does
exhibit the runaway recursion problem you observe?
Alex
More information about the Python-list
mailing list