Am 16.09.2022 um 23:34 schrieb Eryk Sun:
On 9/16/22, Ralf M. <ral...@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.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to