開發必備知識點---根據字串匯入模組並且找到類
阿新 • • 發佈:2018-12-21
1 import importlib 2 3 # 根據字串 找到匯入的模組和類 4 5 # 在同級目錄下建立xxx.py檔案,然後通過python的importlib模組匯入 6 m = importlib.import_module('xxx') 7 8 # 匯入過來後執行了xxx.py檔案的print() 根據字串匯入模組 9 10 print(m) # <module 'xxx' from 'D:\\學習歷程\\老男孩\\第七模組\\pro_crm\\rbac\\xxx.py'> 11 12 cls = getattr(m, 'Foo') 13 print(cls) # <class 'xxx.Foo'> 14 15 # 例項化一個物件 16 obj = cls('江子牙') 17 18 # 執行物件的方法 19 obj.func() # 江子牙 20 21 # 根據path匯入該模組 22 RBAC_USER_MODEL_CLASS = 'x.xxx.X' 23 24 # 獲取模組名稱和類的名稱 25 module_path, model_class_name = RBAC_USER_MODEL_CLASS.rsplit('.', maxsplit=1) 26 27print(module_path, model_class_name) 28 29 m = importlib.import_module(module_path) 30 31 cls = getattr(m, model_class_name)
django也有個模組有這個功能,其實內部就是通過上面實現的。
1 from django.utils.module_loading import import_string 2 3 m = import_string('xxx.Foo') 4 print(m) 5 6 # 根據字串匯入模組 7 # <class 'xxx.Foo'>