settings插拔式源码
2024-09-07 10:07:11
创建一个文件夹notify
__init__.py
import settings
import importlib def send_all(content):
for path_str in settings.NOTIFY_LIST: # 1.拿出一个个的字符串 'notify.email.Email'
module_path,class_name = path_str.rsplit('.',maxsplit=1) # 2.从右边开始 按照点切一个 ['notify.email','Email']
module = importlib.import_module(module_path) # from notity import msg,email,wechat
cls = getattr(module,class_name) # 利用反射 一切皆对象的思想 从文件中获取属性或者方法 cls = 一个个的类名
obj = cls() # 类实例化生成对象
obj.send(content) # 对象调方法
email.py
class Email(object):
def __init__(self):
pass # 发送邮件需要的代码配置 def send(self,content):
print('邮件通知:%s'%content)
msg.py
class Msg(object):
def __init__(self):
pass # 发送短信需要的代码配置 def send(self,content):
print('短信通知:%s' % content)
qq.py
class QQ(object):
def __init__(self):
pass # 发送qq需要的代码准备 def send(self,content):
print('qq通知:%s'%content)
wechat.py
class WeChat(object):
def __init__(self):
pass # 发送微信需要的代码配置 def send(self,content):
print('微信通知:%s'%content)
settings.py
NOTIFY_LIST = [
'notify.email.Email',
'notify.msg.Msg',
# 'notify.wechat.WeChat',
'notify.qq.QQ',
]
start.py
import notify notify.send_all('国庆放假了 记住放八天哦')
最新文章
- iOS-开发者相关的几种证书
- 前端使用js读取文件
- opencv用imread( argv[1], 1)读取图片
- Uva 10129 单词
- ssh免密码登陆及其原理
- [转载]使用SoapUI进行负载测试
- js基础学习第一天(关于DOM和BOM)一
- AWS SQS DOC AND RUBY DEMO
- Linux--------------安装vim
- 李洪强iOS开发Swift篇—09_属性
- Hibernate(四)——缓存策略+lazy
- 解决ubuntu 14.04在显示屏电缆被拔出的问题
- Less合并
- 日志模块---logging
- JavaScript 是如何工作:Shadow DOM 的内部结构 + 如何编写独立的组件!
- Leetcode#70. Climbing Stairs(爬楼梯)
- Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
- Saiku多用户使用时数据同步刷新(十七)
- 1.Linux进程--进程标识号
- SQL中 根据行号设置每行数据的排序数值
热门文章
- Leetcode 946. Validate Stack Sequences 验证栈序列
- JavaScript提供了哪几种“异步模式”?
- 安卓权威编程指南 挑战练习 25章 深度优化 PhotoGallery 应用
- 一起了解 .Net Foundation 项目 No.8
- 整合 KAFKA+Flink 实例(第一部分,趟坑记录)
- 数据库--Redis
- iview 踩坑之旅
- vue安卓4.4.2页面打不开的坑
- vs code开发python时找不到当前目录下的文件、UnicodeDecodeError: 'gbk'
- 使用jquery实现动态时钟