赞
踩
转载:https://www.cnblogs.com/alice-bj/articles/9276880.html
仿django的中间件的编程思想
用户可通过配置,选择是否启用某个组件/某个功能,只需要配置
eg:报警系统,发邮件,发微信 。。。
( 根据字符串导入模块, 利用反射找到模块下的类,实例化。执行 )
- # settings.py
-
- NOTIFY_LIST = [
- 'notify.email.Email',
- 'notify.msg.Msg',
- 'notify.wechat.Wechat',
- ]
-
- -----------------------------
-
- # app.py
-
- from notify import send_xxx
-
- def run():
- send_xxx("报警")
-
- if __name__ == "__main__":
- run()
-
- ----------------------------
-
- # notify/__init__.py
-
- # 根据字符串 导入模块
-
- import settings
- import importlib
-
- def send_xxx(content):
- for path in settings.NOTIFY_LIST:
- # 'notify.email.Email',
- # 'notify.msg.Msg',
- # 'notify.wechat.Wechat',
- module_path,class_name = path.rsplit('.',maxsplit=1)
- # 根据字符串导入模块
- module = importlib.import_module(module_path)
- # 根据类名称去模块中获取类
- cls = getattr(module,class_name)
- # 根据类实例化
- obj = cls()
- obj.send(content)
-
-
- -----------------------------
-
-
-
- # notify/email.py
-
- class Email(object):
- def __init__(self):
- pass
-
- def send(self,content):
- print("email send..")
-
-
- # notify/msg.py
-
- class Msg(object):
- def __init__(self):
- pass
-
- def send(self,content):
- print("msg send..")
-
-
- # notify/wechat.py
-
- class Wechat(object):
- def __init__(self):
- pass
-
- def send(self,content):
- print("wechat send..")

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。