Functions, callable objects, and bound/unbound methods

Michele Simionato michele.simionato at gmail.com
Fri Dec 1 05:21:47 EST 2006


Duncan Booth wrote:
> 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.

See also

http://groups.google.com/group/comp.lang.python/browse_frm/thread/d691240a5cfebcdf/93503c5b9c66226e?lnk=gst&q=simionato+subclassing+FunctionType&rnum=1&hl=en#93503c5b9c66226e

for an example and some discussion.

     Michele Simionato




More information about the Python-list mailing list