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