繁体   English   中英

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

[英]How to access a class from a dynamically imported 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. 访问该类中的方法

最后,我将必须执行以下操作:

module_object.aud_shell.some_method()

我希望我能正确解释。 让我知道我是否没有任何道理。 谢谢。

实际上,在发布此问题后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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM