replacement for new.instancemethod in Python3?

skip at pobox.com skip at pobox.com
Sun Apr 5 08:07:26 EDT 2009


> Is there a replacement in Python3 for new.instancemethod?

I think I can answer my own question: functools.partial:

    >>> class C:
    ...   pass
    ... 
    >>> def meth(self, x):
    ...   self.x = x
    ... 
    >>> c = C()
    >>> c.meth = meth
    >>> c.meth(5)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: meth() takes exactly 2 positional arguments (1 given)
    >>> import functools
    >>> c.meth = functools.partial(meth, c)
    >>> c.meth(5)
    >>> c.x
    5

Is this the "one obvious" way to do this in Python3?

-- 
Skip Montanaro - skip at pobox.com - http://www.smontanaro.net/
        "XML sucks, dictionaries rock" - Dave Beazley



More information about the Python-list mailing list