Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Ejecutar una función alojada en una tupla.
#2
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í:

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.
Responder


Mensajes en este tema
RE: Ejecutar una función alojada en una tupla. - por Francisco - 20-01-2022, 01:04 AM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)