动态导入模块

  反射是使用一个字符串中的形式去映射内存中的对象,详情请点击.但是如果我已知了一个对象的名称,或者是希望以用户输入的字符串形式进行模块的导入的话就可以使用__import__方法。

mod = __import__("lib.aa")#此时mod只到lib的路径,没有到aa中,所以无法直接调用aa中的方法。
obj = mod.aa#此时就进入了aa模块路径,可以进行aa模块的调用
obj.class_name._func_name()#调用该模块下的类以及类里的对象。

  但是该方法是解释器内部进行使用的,官方建议一般不使用该方式,而使用importlib.更加简单明了。

__Author__ = "Panda-J"

mod = __import__("lib.aa")#此时mod只到lib的路径,没有到aa中,所以无法直接调用aa中的方法。
obj = mod.aa#此时就进入了aa模块路径,可以进行aa模块的调用
obj.class_name()._func_name#调用该模块下的类以及类里的对象。

import importlib

aa = importlib.import_module("lib.aa")#直接就到了aa的路径下,而不会像内置__import__方法一样只到lib
aa.class_name().func_name#对aa中的类以及类下的对象进行调用。

  

 

原文地址:https://www.cnblogs.com/BigJ/p/7426289.html