How to replace an instance method?

Ralf M. Ralf_M at t-online.de
Sat Sep 17 17:11:28 EDT 2022


Am 16.09.2022 um 23:34 schrieb Eryk Sun:
> On 9/16/22, Ralf M. <Ralf_M at t-online.de> wrote:
>> I would like to replace a method of an instance, but don't know how to
>> do it properly.
> 
> A function is a descriptor that binds to any object as a method. For example:
> 
>      >>> f = lambda self, x: self + x
>      >>> o = 42
>      >>> m = f.__get__(o)
>      >>> type(m)
>      <class 'method'>
>      >>> m.__self__ is o
>      True
>      >>> m(10)
>      52

Thank you and Chris A. for the two suggestions how to replace a method.

I tried both
   inst.method = functools.partial(new_method, inst)
and
   inst.method = new_method.__get__(inst)
and both work in my toy example.
I will try it on the real code next week.

Even though the functools.partial solution is easier to understand (at
least for me), I will probably use the __get__ solution as it avoids
the import of an extra library.

Ralf M.


More information about the Python-list mailing list