On 3/28/2010 9:46 AM, Ethan Furman wrote:
Robert Kern wrote:
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.

Ah, thank you.

In Python 3, though, would the Pack.info form be correct?

Yes. One of the simplifications of Py3.

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

Reply via email to