1、建立一個python包

2、包裡面每個檔案内容
<1> email.py裡面
class Email(object):
def send(self, content):
print("郵件消息:{}".format(content))
<2> qq.py裡面
class QQ(object):
def send(self, content):
print("QQ消息:{}".format(content))
<3> we_chat.py裡面
class WeChat(object):
def send(self, content):
print("微信消息:{}".format(content))
3、包的同級目錄增加配置檔案、和增加主程式py檔案
<1> reflect_settings.py 檔案裡面
# 類似django中間件的配置,注釋了就不再生效
SEND_MESSAGE_SETTINGS = [
"reflect2.we_chat.WeChat",
"reflect2.qq.QQ",
"reflect2.email.Email"
]
<2> reflect_send_message.py 檔案裡面
import importlib
from reflect_settings import SEND_MESSAGE_SETTINGS
# 模拟群發消息
def send_message(content):
for i in SEND_MESSAGE_SETTINGS:
path, cla = i.rsplit('.', 1)
path = importlib.import_module(path)
# path = __import__(path, fromlist=(cla,))
class_obj = getattr(path, cla)
instance_obj = class_obj()
instance_obj.send(content)
if __name__ == '__main__':
send_message("今天發獎金!")
列印結果:
4、如果再加釘釘發消息,直接再包裡面建立dingding.py 。同時也實作send方法,然後在配置檔案加一行配置
SEND_MESSAGE_SETTINGS = [
"reflect2.we_chat.WeChat",
"reflect2.qq.QQ",
"reflect2.email.Email",
"reflect2.dingding.DingDing",
]
5、運作 reflect_send_message.py 檔案
效果:
這樣就實作了,動态的去調用對象方法