一:先上目录结构

二:各个文件的代码

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/4 16:42 from utils.message import send_msgs send_msgs('')

app.py

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/4 16:42 MSG_LIST={
# 可以添加或注释
'utils.message.email.Email',
'utils.message.msg.Msg',
}

settings

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/4 16:42 import settings
import importlib def send_msgs(msg):
for path in settings.MSG_LIST:
m,c=path.rsplit('.',maxsplit=1)
md=importlib.import_module(m)
obj=getattr(md,c)()
obj.send(msg)

__init__.py

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/4 17:05
# 相当于java中的接口 class Base(object):
def send(self, msg):
raise NotImplementedError('没有实现send方法')

base.py

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/4 16:51
from .base import Base
class Email(Base):
'''
发送邮件相关
'''
def __init__(self):
'''
邮箱相关数据初始化
'''
self.username='aaa'
self.pwd='bbb'
def send(self,msg):
print('Email',msg)
pass

email.py

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/4 16:53
from .base import Base class Msg(Base):
'''
发送短信相关
''' def __init__(self):
'''
短信相关数据初始化
'''
self.phonenum = '' def send(self, msg):
print('Msg',msg)
pass

msg.py

这种方式代码和代码之间的耦合性很低,可扩展性很强,可以用在数据库操作上
操作的时候只要修改settings文件就行了
如果要扩展其他发送信息的方法只要按照格式在message目录下新建一个类,实现方法,然后添加到settings中
如果不用某种方法只要在settings中注释掉
这种方式在scrapy框架中用的非常多。

扩展性很强的python实现方式的更多相关文章

  1. MySQL - 扩展性 1 概述:人多未必力量大

    我们应该接触过或者听说过数据库的性能瓶颈问题.对于一个单机应用而言,提升数据库性能的最快路径就是氪金 - 买更高性能的数据库服务器,只要钱到位,性能不是问题. 但是当系统性能增加到一定地步时,你会发现 ...

  2. TCP接入层的负载均衡、高可用、扩展性架构

    一.web-server的负载均衡 互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡.整个架构分三层: 上游调用层,一般是browser或者APP 中间反向代理层,n ...

  3. python基础----封装、封装与扩展性

    从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,还有egon和alex一起装进麻袋,然后把麻袋封上口子.但其实这种理解相当片面 首先我们要了解 要封装什么 你钱包的有多少钱(数 ...

  4. 【Java/Android性能优 4】PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强

    本文转自:http://www.trinea.cn/android/preloaddatacache/ 本文主要介绍一个支持自动向前或向后获取新数据的缓存的使用及功能.Android图片内存缓存可见I ...

  5. Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强

    本文主要介绍一个支持图片自动预取.支持多种缓存算法的图片缓存的使用及功能.图片较大需要SD卡保存情况推荐使用ImageSDCardCache. 与Android LruCache相比主要特性:(1). ...

  6. 【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强

    本文转自:http://www.trinea.cn/android/android-imagecache/ 主要介绍一个支持图片自动预取.支持多种缓存算法.支持二级缓存.支持数据保存和恢复的图片缓存的 ...

  7. python之封装与扩展性

    1.封装与扩展性 封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用的代码:而外部使用者只知道一个接口(函数),只要接口(函数)名,参数不变,使用者的代码永远无需改变.这就提供了一 ...

  8. Atitit.软件架构高扩展性and兼容性原理与概论实践attilax总结

    Atitit.软件架构高扩展性and兼容性原理与概论实践attilax总结 1. 什么是可扩展的应用程序?1 2. 松耦合(ioc)2 3. 接口的思考 2 4. 单一用途&模块化,小粒度化2 ...

  9. 面向对象 - 1.封装之如何实现属性的隐藏/2.封装的意义/3.封装与扩展性/4.property的使用

    1.封装之如何实现属性的隐藏封装: __x=1 # 把数据属性隐藏 (如何实现隐藏) 类定义阶段 __开头发生了变形 __x --> _A__x特点: 1.在类外部无法直接:obj.__Attr ...

随机推荐

  1. 4-Perl 数据类型

    1.Perl 数据类型Perl 是一种弱类型语言,所以变量不需要指定类型,Perl 解释器会根据上下文自动选择匹配类型.Perl 有三个基本的数据类型:标量.数组.哈希.以下是这三种数据类型的说明:1 ...

  2. 发明专利定稿&递交申请啦,开心

    也不想写些什么,只是想简单的分享一下当前的心情! 第一版到最后一版中间因为各种事情耽误,一直弄到现在.5月中旬找的专利代理局中间连续修改很多次,从大改到小改,再到微调真的是学习到了! 下面就是搞定&l ...

  3. Autofac通过配置的方式

    autofac是比较简单易用的IOC容器.下面我们展示如何通过json配置文件,来进行控制反转. 需要用到以下程序集.可以通过nugget分别安装 Microsoft.Extensions.Confi ...

  4. List 集合 一行4个排序

    List<string> list = new List<string>(); ; i < ; i++) { list.Add(i.ToString()); } int ...

  5. 用<![CDATA[]]>将xml转义为 纯文本

    被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容"<". 此标记用于xml文档中,我们先 ...

  6. js大神成长指路

    随着我的成长,我的兴趣也在不断地分化,他们似乎都是不相关的领域.我喜欢数学就像我喜欢历史一样.我的目标是成为一个多才多艺的人——一个学者——在许多领域都能成为杰出的人才.这是一项艰巨的任务.突然间,我 ...

  7. JCA-Java加密框架

    转自:https://www.jianshu.com/p/a8194c237363 JCA是平台的一个主要部分,包含一个“Provider”体系结构和一组用于数字签名,消息摘要(哈希),证书和证书验证 ...

  8. MySQL 5.7.18 zip版本的安装使用方法

    转自:https://www.cnblogs.com/nepulgh/p/7152618.html MySQL 5.7.18 zip版本的安装使用方法 这个版本的MySQL不像那种点击就可以立即安装, ...

  9. Mac EI 10.11.3 MySQL5.7.11 .dmg 安装(便捷设置,密码重置,卸载)

    MySQL 5.7+ 安装成功以后会弹出一个临时密码 后面需要通过临时密码设置新的密码 重置root密码:安装成功后,使用临时密码登陆:敲入命令,mysqladmin -u root -p passw ...

  10. 给Eclipse安装MinGW

    @2019-06-30 [小记] 安装完Eclipse后Toolchains只有Cross GCC,下载安装MinGW后添加系统环境变量即可