On 2010-03-27 08:19 , Ethan Furman wrote:
Okay, different post for my actual questions.  :)

On the PyPI page for strait (http://pypi.python.org/pypi/strait/0.5.1)
it has the example of choosing which methods to keep in the composed class:

class TOSWidget(BaseWidget):
__metaclass__ = include(Pack, Place, Grid)
info = Pack.info.im_func
config = Pack.config.im_func
configure = Pack.configure.im_func
slaves = Pack.slaves.im_func
forget = Pack.forget.im_func
propagate = Pack.propagate.im_func

My question is:

Why use

info = Pack.info.im_func

instead of

info = Pack.info

?

Pack.info is an unbound method object attached to the Pack class, not a function object. It has some extra semantics on top of functions and is tied to the Pack class. The .im_func attribute gets the actual function object underneath. When defining the TOSWidget class, the objects defined in the suite under the class: statement need to be actual functions in order to be turned into unbound methods attached to the TOSWidget class.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to