Modulos, importar desde variables.
Chema Cortes
py en ls-l.org
Vie Sep 16 09:43:18 CEST 2005
Chema Cortes escribió:
> Refactorizando un poco:
>
> codigos=(
> 40100000, # Abm clientes.
> 40201500, # Resumen p/Cliente
> 40202000 # Resumen General
> 40203000 # Cierre de mes
> )
>
> # -40- Clientes.
> for codigo in codigos:
> EVT_MENU(self, codigo, self.mkProc(codigo))
>
> def mkProc(self, codigo):
> def genericProc(self, event):
> pr=geattr(__import__('f'+str(codigo)),'p'+str(codigo))
> win = pr(self.pmios, self, -1, "")
> win.CenterOnParent()
> win.Show(true)
> return genericProc
Probablemente esté mal (no lo he probado). El método mkProc debería
devolver una función desligada (unbound), o sea, sin que esté el "self"
como argumento. Algo así:
def mkProc(self, codigo):
def genericProc(event):
pr=geattr(__import__('f'+str(codigo)),'p'+str(codigo))
win = pr(self.pmios, self, -1, "")
win.CenterOnParent()
win.Show(true)
return genericProc
<mode type="advanced">
No es el caso, pero si fuera necesario que el método creado
dinámicamente estuviera ligado a la instancia, se haría a través del
método __get__ de los descriptores:
def mkProc(self, codigo):
def genericProc(self, event):
#....
#....
return genericProc.__get__(self, Tipo)
Donde "Tipo" sería la clase que estamos definiendo.
</mode>
Más información sobre la lista de distribución Python-es