python 动态导入类_从动态导入模块中类的字符串名动态实例化?
tl;博士
使用importlib.import_module導入根模塊,并使用getattr函數(shù)按名稱加載類:# Standard import
import importlib
# Load "module.submodule.MyClass"
MyClass = getattr(importlib.import_module("module.submodule"), "MyClass")
# Instantiate the class (pass arguments to the constructor, if needed)
instance = MyClass()
解釋
您可能不想使用__import__按名稱動態(tài)導入模塊,因為它不允許您導入子模塊:>>> mod = __import__("os.path")
>>> mod.join
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'module' object has no attribute 'join'
Here是python文檔所說的__import__:Note: This is an advanced function that is not needed in everyday
Python programming, unlike importlib.import_module().
相反,使用標準^{}模塊按名稱動態(tài)導入模塊。使用^{}可以按類的名稱實例化類:import importlib
my_module = importlib.import_module("module.submodule")
MyClass = getattr(my_module, "MyClass")
instance = MyClass()
你也可以寫:import importlib
module_name, class_name = "module.submodule.MyClass".rsplit(".", 1)
MyClass = getattr(importlib.import_module(module_name), class_name)
instance = MyClass()
此代碼在python≥2.7(包括python 3)中有效。
總結
以上是生活随笔為你收集整理的python 动态导入类_从动态导入模块中类的字符串名动态实例化?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python图像识别步骤_利用百度智能云
- 下一篇: python 模块 多线程 单例_pyt