django学习:字符串方式的配置文件思路

importlib、split、反射、鸭子类型

基于字符串方式的配置文件

###
import settings  # 导入配置文件
import importlib # 导入模块
配置思路:
	1.循环出对应的配置文件字符串
    2.通过split进行切分,获取到模块的路径和文件当中类的名字,需要通过类名生成对象,然后用到python的鸭子类型
    3.利用importlib生成模块
    4.反射查找出模块当中的类名(cls存储)
	5.利用类生成对象
	6.对象.方法(这里就是用到python的鸭子类型,所有的类当中都有相同的方法)


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

作业

posted @ 2021-01-12 21:52  Ailewent  阅读(40)  评论(0)    收藏  举报