problema con getattr y otras dudas de novato...

Arnau Sanchez pyarnau en gmail.com
Dom Ene 6 18:52:53 CET 2008


Kike Cabrera escribió:

> def funcion_principal(entero, lista):
>   def subfuncion_uno(lista):
>   def subfuncion_dos(lista):
>   diccionario = {1:'uno', 2:'dos'}
>   num = diccionario[entero] # asigno a num el valor de entero en el
> diccionario
>   subfuncion_salida = getattr(¿modulo?, "subfuncion_%s" % num) # ¿como puedo
> decir q la funcion está aquí mismo??
>   subfuncion_salida(lista) #¿esto funcionaria?

Tienes que usar el diccionario de variables locales que te da el 
built-in "locals()":

def f1():
    pass

fun = locals()["f1"]

En tu ejemplo, habitualmente podrías:

diccionario = {1: subfuncion_uno, 2: subfuncion_dos}

Pero también puede ser útil hacerlo de forma indirecta, depende del 
contexto.
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


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