模仿django的settings文件

通过字符串调py文件并执行:

'''

init.py 精髓*****
import settings
import importlib

def send_add(content):
for path_str in setting.SETTING_LIST
module_path,class_name = path_str.rsplit('.',maxsplit=1)
# module_path = .email class_name = 'Email'
从右切 切一次 并把值 赋给2个变量
1 利用字符串导入模块
module = importlib.import_module(module_path)
以上就等于 from import email

2 利用反射获取类型
cls = getattr(module,class_name)

3 生成类的对象
obj - cls()

4 利用鸭子类型直接调用send方法
obj.send(content)


wechat.py
class Wechat(object):
def __init__(self):
pass # 发送微信需要做的前期准备工作 比如调用接口 模块等等

def send(self,content) #暴露个接口
print('微信通知%'%content)

qq.py
class qq(object):
def __init__(self):
pass # 发送qq需要做的前期准备工作 比如调用接口 模块等等

def send(self,content) #暴露个接口
print('qq通知%'%content)

email.py
class email(object):
def __init__(self):
pass # 发送邮箱需要做的前期准备工作 比如调用接口 模块等等

def send(self,content) #暴露个接口
print('email通知%'%content)


start.py
import
.send_all('块下课了')


配置文件 不在包里
setting.py
SETTING_LIST = [
.email.Email #emailpy文件 Email是类名
.qq.QQ
.wechat.Wechat
]

''
原文地址:https://www.cnblogs.com/xuexihainan/p/14045494.html