[Python- es] ¿Cierres en Python?
Andrés Marzal Varo
amarzal en lsi.uji.es
Mie Ago 7 18:40:09 CEST 2002
Mensaje citado por Esteban Manchado Velázquez
<zoso en demiurgo.org>:
Prueba con esto:
class Clase:
def __init__(self):
# ...
self.f = lambda con, msg, s=self:
s.nuevoMensaje(con, msg)
self.jabber.setMessageHandler(self.f)
def nuevoMensaje(self, con, msg):
print "He recibido un nuevo mensaje con el texto
%s" % msg
Si no te he entendido mal, tienes el mismo problema que
surge al tartar de meter lambda-funciones como callbacks
en aplicaciones que usan Tkinter. En ese otro contexto,
el problema se soluciona como ves: se crea un parámetro
con valor por defecto (le he llamado s, pero puedes
llamarle self) y se le asigna el valor por defecto self.
El valor por defecto se establece en el contexto de
ejecución de creación de la lambda-función, así que
debería solucionar tu problema.
Salud.
Andrés.
Más información sobre la lista de distribución Python-es