En python, tengo que instanciar cierta clase, conociendo su nombre en una cadena, pero esta clase 'vive' en un módulo importado dinámicamente. Un ejemplo es el siguiente:instanciación dinámica de Python desde el nombre de cadena de una clase en el módulo importado dinámicamente
secuencia de comandos de clase loader:
import sys
class loader:
def __init__(self, module_name, class_name): # both args are strings
try:
__import__(module_name)
modul = sys.modules[module_name]
instance = modul.class_name() # obviously this doesn't works, here is my main problem!
except ImportError:
# manage import error
guión algunos de módulo cargado dinámicamente-:
class myName:
# etc...
I utilizar esta disposición para hacer cualquier-módulo cargado dinámicamente para ser utilizado por la clase loader siguiendo ciertos comportamientos predefinidos en los módulos dyn-loaded-
Se agradecen todas las ideas.
'module = __import __ (module, fromlist = [name])' solo funcionó para mí. – umpirsky
Si alguien tiene problemas con el método de importación mencionado anteriormente, Sven encontré que mi código funcionaba mejor utilizando el siguiente método en su lugar [importlib.import_module] (http://docs.python.org/2/library/importlib.html#importlib .import_module). Puede ser utilizado como: module = importlib.import_module (module_name) – jpennell
@jpennell debe publicar eso como respuesta, a menudo es más útil poder usar directamente la cadena devuelta por 'obj .__ module__' – Anentropic