Cómo cargar dinámicamente módulos o clases en Python

Python proporciona una función para crear y almacenar clases y métodos y almacenarlos para su uso posterior. El archivo que contiene estos conjuntos de métodos y clases se denomina módulo . Un módulo puede tener otros módulos en su interior.

Nota: Para obtener más información, consulte Módulos de Python

Ejemplo: a continuación se muestra un ejemplo simple de importación de un módulo en el que hay 2 archivos que son module.py e importing_mod.py en el mismo directorio. El archivo module.py actúa como un módulo para el archivo import_mod.py.

módulo.py

# welcome method in the module 
def welcome(str):
    print("Hi ! % s Welcome to GfG" % str)

archivo import_mod.py

# importing module.py file 
import module as mod
  
  
# running the welcome method
mod.welcome("User_1") 

Producción

Hi! User_1 Welcome to GfG

Carga dinámica de módulos o clases

Los módulos agregados en el código anterior están importando módulos estáticamente, es decir, en tiempo de compilación. En Python podemos importar módulos dinámicamente de dos formas

  • Al usar el método __import__(): __import__() es un método dunder (métodos de clase que comienzan y terminan con doble guión bajo también llamado método mágico) y todas las clases lo poseen. Se utiliza para importar un módulo o una clase dentro de la instancia de una clase. A continuación se muestra un ejemplo de este método, en el que importaremos un módulo dinámicamente. El archivo del módulo ahora se modifica como:

    módulo.py

    # class inside the module
    class Welcome:
        def welcome(str):
            print("Hi ! % s Welcome to GfG" % str)

    Dynamic_import.py

    class Dimport:
        def __init__(self, module_name, class_name):
            #__import__ method used
            # to fetch module
            module = __import__(module_name)
      
            # getting attribute by
            # getattr() method
            my_class = getattr(module, class_name)
            my_class.welcome('User_1')
        
    # Driver Code  
    obj = Dimport("module", "Welcome")

    Producción

    Hi! User_1 Welcome to GfG
  • Usando el módulo imp: Los módulos pueden ser importados dinámicamente por el módulo imp en python. El siguiente ejemplo es una demostración sobre el uso del módulo imp. Proporciona el find_module()método para encontrar el módulo y el import_module()método para importarlo.

    Dynamic_import.py

    import imp
    import sys
      
      
    # dynamic import 
    def dynamic_imp(name, class_name):
          
        # find_module() method is used
        # to find the module and return
        # its description and path
        try:
            fp, path, desc = imp.find_module(name)
              
        except ImportError:
            print ("module not found: " + name)
              
        try:
        # load_modules loads the module 
        # dynamically ans takes the filepath
        # module and description as parameter
            example_package = imp.load_module(name, fp,
                                              path, desc)
              
        except Exception as e:
            print(e)
              
        try:
            myclass = imp.load_module("% s.% s" % (name,
                                                   class_name), 
                                      fp, path, desc)
              
        except Exception as e:
            print(e)
              
        return example_package, myclass
          
    #  Driver code
    if __name__ == "__main__":
        mod, modCl = dynamic_imp("GFG", "addNumbers")
        modCl.addNumbers(1, 2)

    Producción

    Hi! User_1 Welcome to GfG

Publicación traducida automáticamente

Artículo escrito por piyush25pv y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *