new.instancemethod questions

schickb schickb at
Fri Jan 30 04:52:09 CET 2009

On Jan 29, 7:38 pm, Mel <mwil... at> wrote:
> schickb wrote:
> > I'd like to add bound functions to instances, and found the
> > instancemethod function in the new module. A few questions:
> > 1. Why is instancemethod even needed? Its counter-intuitive (to me at
> > least) that assigning a function to a class results in bound functions
> > its instances, while assigning directly to instances does not create a
> > bound function. So why doesn't assigning a function to an instance
> > attribute result in a function bound to that instance?
> If I understand you correctly, rebinding to the instance would break code
> like:
> myfakefile.write = sys.stdout.write
> where the intent would be to redirect any output through myfakefile straight
> to sys.stdout.  The code for the sys.stdout.write function would never find
> the attributes it needed in the instance of myfakefile.  To do this,
> methods have to stay bound to their proper instances.

1. I'm thinking about assigning free non-bound functions. Like:

class A(object):

def func(self):
   print repr(self)

a = A()
a.func = func  # Why doesn't this automatically create a bound
function (aka method)?

2. And what is the preferred way to do this if the "new" module and
its instancemethod function are depreciated?


More information about the Python-list mailing list