动态导入模块__import__("str")

Posted zhangmingda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态导入模块__import__("str")相关的知识,希望对你有一定的参考价值。

解释器内部使用的为__import__(‘str‘)
技术分享图片
#!/usr/bin/env python
# Author:Zhangmingda

print(我是aa类 ) #被import的时候就执行

class A(object):
    def __init__(self):
        self.name = 张铭达
    def getname(self):
        print(我是方法getname)
lib目录下的aa.py
技术分享图片
#!/usr/bin/env python
# Author:Zhangmingda

modname =  lib.aa #模块名的字符串形式
modlib  = __import__(modname) #通过字符串获取模块,获取到的模块名字为字符串形式点号.以前的部分(本例为“lib”)
modaa = modlib.aa  #获取到以后就可以各种调用赋值了
aa_obj = modaa.A() #这个aa模块里面有个类名A,调用方法也可以直接写为:aa_obj = modlib.aa.A()从而省去一步
print(aa_obj.name)
aa_obj.getname()
lib目录同级的 动态导入模块.py
技术分享图片
C:UsersAdministratorDesktopPython3_studyvenvScriptspython.exe C:/Users/Administrator/Desktop/Python3_study/day7/动态导入模块.py
我是aa类 
张铭达
我是方法getname

Process finished with exit code 0
执行输出

官方建议使用:

技术分享图片
#!/usr/bin/env python
# Author:Zhangmingda
import  importlib
modname =  lib.aa #模块名的字符串形式
# modlib  = __import__(modname) #通过字符串获取模块,获取到的模块名字为字符串形式点号.以前的部分(本例为“lib”)
# modaa = modlib.aa  #获取到以后就可以各种调用赋值了
# aa_obj = modaa.A() #这个aa模块里面有个类名A,调用方法也可以直接写为:aa_obj = modlib.aa.A()从而省去一步
# print(aa_obj.name)
# aa_obj.getname()
aa = importlib.import_module(modname)
aa_obj = aa.A()
print(aa_obj.name)
标准库:importlib.py
技术分享图片
C:UsersAdministratorDesktopPython3_studyvenvScriptspython.exe C:/Users/Administrator/Desktop/Python3_study/day7/动态导入模块.py
我是aa类 
张铭达

Process finished with exit code 0
输出:

 

以上是关于动态导入模块__import__("str")的主要内容,如果未能解决你的问题,请参考以下文章

动态导入模块

基础入门_Python-模块和包.运维开发中__import__动态导入最佳实践?

导入模块的方法(常规导入与动态导入)

七. 使用反射动态导入模块

python动态模块导入

Python内置函数 __import__ 动态加载模块