如何从动态导入的模块访问类

时间:2015-07-01 20:56:52

标签: python class dynamic import module

我动态导入了一个模块:

module_object = importlib.import_module(audio_module)

现在,如果我得到与该模块关联的属性列表:

print dir(module_object)

我得到以下内容:

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'aud_shell', 'shlex', 'sys']

我想访问位于此模块中的“aud_shell”类。但是由于这个模块是动态导入的,所以我不知道它里面有哪个类。如何在此导入的模块中搜索以获取类名,然后访问该类?

例如:

  1. 动态导入模块
  2. 获取模块中的类名称
  3. 访问该类中的方法
  4. 最后,我必须做这样的事情:

    module_object.aud_shell.some_method()
    

    我希望我能正确解释这一点。如果我没有任何意义,请告诉我。感谢。

1 个答案:

答案 0 :(得分:1)

实际上在发布这个问题后5分钟我能够解决它,但是为了防止其他人试图在这里做同样的事情:

动态导入模块后:

module_object = importlib.import_module(audio_module)

您可以通过执行以下操作获取课程:

module_class = inspect.getmembers(module_object, inspect.isclass)

然后你需要用模块创建该类的对象。这可以通过以下方式完成:

class_object = getattr(module_object, module_class)

现在当我打印“class_object”时,我得到以下内容:

>>>print class_object
audio_module.aud_shell

现在我只需要弄清楚如何在类中获取方法列表并访问这些方法......