From: "R. David Murray" <bitz@bitdance.com>
On Sat, 26 Aug 2000, Loren Stafford wrote:
def index_object(self): if self.nextEventTime() is not None: CatalogAware.index_object.im_func(self) # see Python Reference Manual "The standard type hierarchy" # for the built-in type im_func
I realize this is a Python and a not a Zope question, but what is the difference between
CatalogAware.index_object.im_func(self)
and
CatalogAware.index_object(self)
?
--RDM
Here's what MJ told me about that case. I'm not sure it applies to your case. Did you try it? Did it work? -- Loren ----- Original Message ----- From: "Martijn Pieters" <mj@digicool.com> To: "Loren Stafford" <lstaffor@dynalogic.com>; "zope-dev" <zope-dev@zope.org> Sent: March 01, 2000 11:57 AM Subject: [Zope-dev] Re: What is im_func?
From: "Loren Stafford" <lstaffor@dynalogic.com>
Could you elaborate on what im_func is and what it's role is here.
# 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