通过字符串调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 #email是py文件 Email是类名
包.qq.QQ
包.wechat.Wechat
]
''