[Python-es] Parchear en caliente.
Oswaldo
listas en soft-com.es
Jue Jun 16 19:25:05 CEST 2011
El 16/06/2011 18:18, Pepe Aracil escribió:
> Hola lista.
>
> Estoy haciendo un desarrollo con gevent http://www.gevent.org/
> El caso es que gevent permite tener un backdoor (linea de comandos
> python por telnet) mediante el cual puedo manipular cualquier objeto del
> proceso python en tiempo de ejecución.
> Lo que pretendo es poder parchear metodos de instancias en tiempo de
> ejecución. Por ejemplo:
>
> class C(object):
> def f(self):
> print "version 1"
>
> c = C()
> c.f()
>> >> "version 1"
>
> def f1(self):
> print "version 2"
>
> c.f = f1()
>
> c.f()
>
>> >> TypeError: f1() takes exactly 1 argument (0 given)
>
> El caso es que c.f sigue siendo una función y no un "bound method" que
> es lo que quiero que sea.
> Se puede simular un bound method con un objeto del tipo
> functools.partial, pero me gustaria saber si existe la posibilidad de
> convertir una funcion a "bound method".
>
>>> c.f = f1.__get__(c)
>>> c.f()
version 2
Saludos,
--
Oswaldo Hernández
Más información sobre la lista de distribución Python-es