1. 程式人生 > >動態導入模塊__import__("str")

動態導入模塊__import__("str")

zhang 字符串 hide style fin getname 形式 exe 模塊名

解釋器內部使用的為__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:\Users\Administrator\Desktop\Python3_study\venv\Scripts\python.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:\Users\Administrator\Desktop\Python3_study\venv\Scripts\python.exe C:/Users/Administrator/Desktop/Python3_study/day7/動態導入模塊.py
我是aa類 
張銘達

Process finished with exit code 0
輸出:

動態導入模塊__import__("str")