[Python-es] Parchear en caliente.

Pepe Aracil pepe en diselpro.com
Jue Jun 16 23:47:59 CEST 2011


Hola Oswaldo.

Python nunca deja de sorprenderme!!

Gracias.


El 16 de junio de 2011 19:25, Oswaldo <listas en soft-com.es> escribió:

> 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
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110616/17a25e82/attachment.html>


Más información sobre la lista de distribución Python-es