再次仿照django中间件的写法 写出初级功能的调用

前言:
django中间件的配置,均有字符串组成,将字符串注释后则取消对字符串的调用,将字符写上 则代表对字符串可在全局中使用,而我们所要考虑的是字符串为什么能够完成对其背后的函数的调用

模板

消息通知:

想同时发送qq,微信,邮箱,短信通知,

第一步:
建立一个py package(qq.py,wechat.py,email.py,__init__.py)

在各自的py文件,完成对类的书写,

在建立 settings 和 start文件

settings里配置 各自的位置列表 

关键点

NOTIFY_LIST = [
    notify.email.Email,
    notify.qq.Qq,
    notify.wechat.Wechat,
]
#若列表如上所示 如何取出并完成类的实例化形成对象
import importlib
for path_st in NOTIFY_LIST:
    module_str,class_name = path_str.rsplit(.,maxsplit=1)
    module = importlib.import_module(module_path)#相当于from notify import email
        cls = getattr(module,class_name) #利用反射拿到类
        obj = cls() #类的实例化
    
   

主要关键点 是 importlib 和 getattr的使用 都是基础的模块 即使学了很久似乎也无法结合这样一种的编程思想。

 

再次仿照django中间件的写法 写出初级功能的调用

上一篇:3.1.2 两条直线平等与垂直的判定


下一篇:2-1-文件系统设计