如何从动态导入的模块访问 class
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" class。但是由于这个模块是动态导入的,我不知道它里面有什么class。我如何在此导入的模块中搜索以获取 class 名称,然后访问该 class?
例如:
- 动态导入模块
- 在模块
中获取class的名称
- 访问其中的方法 class
最终我将不得不做这样的事情:
module_object.aud_shell.some_method()
希望我解释正确。如果我没有任何意义,请告诉我。谢谢。
实际上在发布这个问题后 5 分钟我就解决了它,但以防万一其他人试图在这里做同样的事情:
动态导入模块后:
module_object = importlib.import_module(audio_module)
您可以通过执行以下操作获得 class:
module_class = inspect.getmembers(module_object, inspect.isclass)
然后你需要用模块创建那个 class 的对象。这是通过以下方式完成的:
class_object = getattr(module_object, module_class)
现在,当我打印 "class_object" 时,我得到以下信息:
>>>print class_object
audio_module.aud_shell
现在我只需要弄清楚如何获取 class 中的方法列表并访问这些方法...
我已经动态导入了一个模块:
module_object = importlib.import_module(audio_module)
现在,如果我得到与该模块关联的属性列表:
print dir(module_object)
我得到以下信息:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'aud_shell', 'shlex', 'sys']
我想访问位于此模块中的 "aud_shell" class。但是由于这个模块是动态导入的,我不知道它里面有什么class。我如何在此导入的模块中搜索以获取 class 名称,然后访问该 class?
例如:
- 动态导入模块
- 在模块 中获取class的名称
- 访问其中的方法 class
最终我将不得不做这样的事情:
module_object.aud_shell.some_method()
希望我解释正确。如果我没有任何意义,请告诉我。谢谢。
实际上在发布这个问题后 5 分钟我就解决了它,但以防万一其他人试图在这里做同样的事情:
动态导入模块后:
module_object = importlib.import_module(audio_module)
您可以通过执行以下操作获得 class:
module_class = inspect.getmembers(module_object, inspect.isclass)
然后你需要用模块创建那个 class 的对象。这是通过以下方式完成的:
class_object = getattr(module_object, module_class)
现在,当我打印 "class_object" 时,我得到以下信息:
>>>print class_object
audio_module.aud_shell
现在我只需要弄清楚如何获取 class 中的方法列表并访问这些方法...