[Zope-dev] Re: What is im_func?

Martijn Pieters mj@digicool.com
Wed, 1 Mar 2000 19:57:19 +0100


From: "Loren Stafford" <lstaffor@dynalogic.com>
> Could you elaborate on what im_func is and what it's role is here. Does it
> have to do with mapply? I see it used there, but don't understand what's
> going on.
>
>     # Only index if nextEventTime returns something
>     def index_object(self):
>         if self.nextEventTime() is not None:
>             CatalogAware.index_object.im_func(self)

im_func is a part of Python introspection. It is the pure function
definition of a class, not bound to that class, so I can pass in an
alternate self.

I am trying to call a superclass method here, and normally
CatalogAware.index_object() would suffice. But because of Extension Classes,
Python gets confused as to what is a class method, and what is a regular
function. It will accuse me of calling an unbound method, which of course I
am not. I circumvent this by calling the unbound function, and passing in
self explicitly.

Martijn Pieters
| Software Engineer    mailto:mj@digicool.com
| Digital Creations  http://www.digicool.com/
| Creators of Zope       http://www.zope.org/
|   The Open Source Web Application Server
---------------------------------------------