python 动态导入类_从动态导入模块中类的字符串名动态实例化?
tl;博士
使用importlib.import_module導(dǎo)入根模塊,并使用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__按名稱動(dòng)態(tài)導(dǎo)入模塊,因?yàn)樗辉试S您導(dǎo)入子模塊:>>> 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().
相反,使用標(biāo)準(zhǔn)^{}模塊按名稱動(dòng)態(tài)導(dǎo)入模塊。使用^{}可以按類的名稱實(shí)例化類: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)中有效。
總結(jié)
以上是生活随笔為你收集整理的python 动态导入类_从动态导入模块中类的字符串名动态实例化?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python图像识别步骤_利用百度智能云
- 下一篇: 上行数据和下行数据什么意思_上行带宽和下