一、傳統(tǒng)方法
創(chuàng)建一個(gè)方法差油,里面封裝對(duì)應(yīng)好的類拗军,用字典封裝,然后對(duì)應(yīng)返回指定的方法
from .plugins.disk import DiskPlugin
from .plugins.mem import MemPlugin
def pack():
obj1 = DiskPlugin()
disk_info = obj1.execute()
obj1 = MemPlugin()
men_info = obj1.execute()
response = {
'disk':disk_info,
'men':men_info,
}
return response
缺點(diǎn)當(dāng)變成人員蓄喇,在寫子類時(shí)发侵,需要更改這個(gè)方法,往里字典中加入對(duì)應(yīng)的方法
二公罕、配置映射法
思路和django的settings文件配置思路一致
setting.py寫法
PLUGINS = {
'disk':'src.plugins.disk.DiskPlugin',
'mem':'src.plugins.disk.MemPlugin',
}
-
importlib.import_module 導(dǎo)入對(duì)應(yīng)的py文件
-
getattr(m,clsname) 獲取對(duì)應(yīng)文件的方法
-
m_path,clsname = v.rsplit('.',maxsplit=1)從右截取直接去一個(gè)
from conf import setting
import importlib
def pack():
response = {}
for k,v in setting.PLUGINS.items():
m_path,clsname = v.rsplit('.',maxsplit=1)
m = importlib.import_module(m_path)
cls = getattr(m,clsname)
#反射
response[k] = cls().execute()
return response