[Python-Dev] Getting rid of unbound methods: patch available

M.-A. Lemburg mal at egenix.com
Mon Jan 17 23:58:34 CET 2005


Guido van Rossum wrote:
> Apart from the tests that were testing the behavior of im_class, I
> found only a single piece of code in the standard library that used
> im_class of an unbound method object (the clever test in the pyclbr
> test). Uses of im_self and im_func were more widespread. Given the
> level of cleverness in the pyclbr test (and the fact that I wrote it
> myself) I'm not worried about widespread use of im_class on unbound
> methods.

I guess this depends on how you define widespread use. I'm using
this feature a lot via the basemethod() function in mxTools for
calling the base method of an overridden method in mixin classes
(basemethod() predates super() and unlike the latter works for
old-style classes).

What I don't understand in your reasoning is that you are talking
about making an unbound method look more like a function. Unbound
methods and bound methods are objects of the same type -
the method object. By turning an unbound method into a function
type, you break code that tests for MethodType in Python
or does a PyMethod_Check() at C level.

If you want to make methods look more like functions,
the method object should become a subclass of the function
object (function + added im_* attributes).

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Jan 10 2005)
 >>> Python/Zope Consulting and Support ...        http://www.egenix.com/
 >>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
 >>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::


More information about the Python-Dev mailing list