Hola, Daniel.
Si en la cadena "agregar.agregarCalculo", "agregar" es un módulo (que está importado) y "agregarCalculo" una función de ese módulo, deberías primero obtener una referencia al módulo a partir de la cadena y segundo, teniendo ya el módulo, obtener una referencia a la función. Sería algo así:
globals() es una función incorporada que retorna un diccionario con los nombres (claves) y las referencias (valores) de los objetos globales en tu programa: https://micro.recursospython.com/recurso...ombre.html.
Con todo, creo que te convendría guardar las funciones directamente como objetos, no como cadenas:
Así te evitas todo el asunto de globals(), getattrs(), etc.
Saludos
Si en la cadena "agregar.agregarCalculo", "agregar" es un módulo (que está importado) y "agregarCalculo" una función de ese módulo, deberías primero obtener una referencia al módulo a partir de la cadena y segundo, teniendo ya el módulo, obtener una referencia a la función. Sería algo así:
Código:
miFuncion = tuplaFunciones[opc]
nombre_mod, nombre_func = miFuncion.split(".")
mod = globals()[nombre_mod]
func = getattr(mod, nombre_func)
func() # Llamar a la función obtenida.
globals() es una función incorporada que retorna un diccionario con los nombres (claves) y las referencias (valores) de los objetos globales en tu programa: https://micro.recursospython.com/recurso...ombre.html.
Con todo, creo que te convendría guardar las funciones directamente como objetos, no como cadenas:
Código:
tuplaFunciones = (agregar.agregarCalculo, buscar.encontrar, ...)
Así te evitas todo el asunto de globals(), getattrs(), etc.
Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!
También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.