Functions, callable objects, and bound/unbound methods

Duncan Booth duncan.booth at invalid.invalid
Fri Dec 1 03:30:09 EST 2006


Ron Garret <rNOSPAMon at flownet.com> wrote:

> I want to say:
> 
> trace(c1.m1)
> 
> and have c1.m1 be replaced with a wrapper that prints debugging info 
> before actually calling the old value of m1.  The reason I want that
> to be an instance of a callable class instead of a function is that I
> need a place to store the old value of the method so I can restore it,
> and I don't want to start building a global data structure because
> that gets horribly ugly, and a callable class is the Right Thing -- if
> there's a way to actually make it work.
> 
> Is there?  I tried the obvious things (like making callable inherit
> from function, and adding im_func and im_self attribuetes) but they
> didn't work.

Read "Functions and Methods" in
http://users.rcn.com/python/download/Descriptor.htm 

You need to implement a __get__ method on your class.



More information about the Python-list mailing list