• 动态导入模块__import__("str") importlib标准库


    解释器内部使用的为__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
    输出:
  • 相关阅读:
    FTP文件乱码和传输模式解释
    win7(x64)+VS2012+cocos2d-x环境的配置以及试运行
    XCode详解及iOSApp上传
    WP8教程
    Windows Phone 8 开发环境搭建
    Wp8开发环境搭建总结
    跟随玩家
    JniHelper 含安卓推送
    软硬结合第二篇——酷我音乐盒的逆天玩法
    IOS ITunesConnect 修改开发商名称
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/9195334.html
Copyright © 2020-2023  润新知