[Python-es] RE: [Python-es] ¿Cierres en Python?

Hernan Martinez Foffani hernan en orgmf.com.ar
Mie Ago 7 14:47:53 CEST 2002


si quien dispara el handler (supongo que algun metodo de jabber)
tiene a mano el objeto self de Clase, bastaría con que registres
en el handler el "unbound method" Clase.nuevoMensaje
pero sospecho que no vas a tener referencia al objeto self, no?

¿tiene que ser nuevoMensaje() un metodo de la clase?
¿cual es la interfaz de jabber.setMessageHandler()?
si no es un metodo de Clase, pasarle eso solo te traerá problemas.


hay una forma algo extraña de simular closures.  es sucia y
limitada (no sirve si tenes que registrar mas de un handler)
ejemplo (no probado):

class Clase:
    def __init__(self):
        # ...
        self.jabber.setMessageHandler(self)

    def __call__(self, con, msg):
        self.nuevoMensaje(con, msg)

    def nuevoMensaje(self, con, msg):
        print "He recibido un nuevo mensaje con el texto %s" % msg

saludos,
-Hernan





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