zoukankan      html  css  js  c++  java
  • 由django中间件引发的编程思想

    由django中间件引发的编程思想

    创建一个文件夹,把一个个功能写成一个个py文件,假如我们写一个消息通知,让qq, 微信,邮箱都能接收到,qq, 微信,邮箱就是一个个功能

    aapp02文件夹下的qq.py

    class Qq(object):
        def __init__(self):
            pass
        def send(self,content):
            print(f'QQ通知:{content}')
    
    

    aapp02文件夹下的wechat.py

    class Wechat(object):
        def __init__(self):
            pass
        def send(self,content):
            print(f'微信通知:{content}')
    
    

    aapp02文件夹下的email.py

    class Email(object):
        def __init__(self):
            pass
        def send(self,content):
            print(f'邮件通知:{content}')
    
    

    aapp02文件夹下的__init__.py

    import  settings
    import importlib
    
    def send_all(content):
        for path_str in settings.APP02_LIST:
            module_path ,class_name = path_str.rsplit('.',maxsplit=1) 
            module = importlib.import_module((module_path)) #1 利用字符串导入模块
            cls = getattr(module,class_name) # 2 利用反射获取类名
            obj =cls() # 3 生成类的对象
            obj.send(content)  # 4 利用鸭子类型直接调用send方法
    

    settings.py:

    APP02_LIST = [
        'aapp02.email.Email',
        'aapp02.qq.Qq',
        'aapp02.wechat.Wechat',
    
    ]
    

    start.py

    import aapp02
    aapp02.send_all('下课了')
    

    当我们添加或者删除一个功能的时候,只需要在seetings里面添加或注释掉就可以了.

  • 相关阅读:
    输入框正则表达式验证
    MySQL表名、列名区分大小写详解
    前后台交互
    分页写法
    web程序调试方法
    html 标签
    Aborting commit: 'XXXXXXXX'remains in conflict错误
    返回按钮
    跳出frameset框架
    fastadmin中关联表时A为主表,想让B表和C表关联时怎么办?
  • 原文地址:https://www.cnblogs.com/zc110/p/13067266.html
Copyright © 2011-2022 走看看