1. 程式人生 > >開發必備知識點---根據字串匯入模組並且找到類

開發必備知識點---根據字串匯入模組並且找到類

 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 27
print(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'>