创建一个文件夹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('国庆放假了 记住放八天哦')

最新文章

  1. iOS-开发者相关的几种证书
  2. 前端使用js读取文件
  3. opencv用imread( argv[1], 1)读取图片
  4. Uva 10129 单词
  5. ssh免密码登陆及其原理
  6. [转载]使用SoapUI进行负载测试
  7. js基础学习第一天(关于DOM和BOM)一
  8. AWS SQS DOC AND RUBY DEMO
  9. Linux--------------安装vim
  10. 李洪强iOS开发Swift篇—09_属性
  11. Hibernate(四)——缓存策略+lazy
  12. 解决ubuntu 14.04在显示屏电缆被拔出的问题
  13. Less合并
  14. 日志模块---logging
  15. JavaScript 是如何工作:Shadow DOM 的内部结构 + 如何编写独立的组件!
  16. Leetcode#70. Climbing Stairs(爬楼梯)
  17. Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
  18. Saiku多用户使用时数据同步刷新(十七)
  19. 1.Linux进程--进程标识号
  20. SQL中 根据行号设置每行数据的排序数值

热门文章

  1. Leetcode 946. Validate Stack Sequences 验证栈序列
  2. JavaScript提供了哪几种“异步模式”?
  3. 安卓权威编程指南 挑战练习 25章 深度优化 PhotoGallery 应用
  4. 一起了解 .Net Foundation 项目 No.8
  5. 整合 KAFKA+Flink 实例(第一部分,趟坑记录)
  6. 数据库--Redis
  7. iview 踩坑之旅
  8. vue安卓4.4.2页面打不开的坑
  9. vs code开发python时找不到当前目录下的文件、UnicodeDecodeError: 'gbk'
  10. 使用jquery实现动态时钟