[Python-es] Parchear en caliente.

Pepe Aracil pepe en diselpro.com
Jue Jun 16 18:18:37 CEST 2011


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".

Gracias.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110616/bd5ded5a/attachment.html>


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