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