02 使用配置文件+反射实现

news/2024/11/17 17:39:29/文章来源:https://www.cnblogs.com/jhchena/p/18436942

使用配置文件+反射实现

  • 需要遵守:开放封闭原则
    • 开放,针对配置开放
    • 封闭,针对功能代码

目录结构

unicom- app.py- settings.py- utils - sms.py- wechat.py
#seetings.py里面代码
MESSAGE_LIST =["utils.sms.send","utils.wechat.send"
]
#sms.py
def send(msg):print("test2 发短信消息",msg)#wechat.py
def send(msg):print("test3 发wechat消息",msg)
# app.py里面代码
# 案例:三个人做项目开发
# test1,业务逻辑开发
# test2 发短信消息
# test3 发wechat消息
import importlibdef run():# 反射+ 工厂模式(配置文件settings)import seetings"""MESSAGE_LIST =["utils.sms.send","utils.wechat.send"
]"""print(seetings.MESSAGE_LIST)for path_string in seetings.MESSAGE_LIST:# 循环后,得到的字符串# print('utils.sms.send')# 表示从右开始找,找到第一个后进行切分  #得到结果是一个列表 ['utils.sms','send']md_path, func_name = path_string.rsplit(".", maxsplit=1)  # 等于导入模块  from utils import smsmd = importlib.import_module(md_path)  # from utils import sms as md  字符串的形式导入 utils.sms# 这样就找到了对应的函数,或者成员,然后执行func = getattr(md, func_name)  func("CPU告警了")if __name__ == ("__main__"):run()

djogo模块,基于字符串模式导入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/805008.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

读数据湖仓02数据抽象

数据抽象1. 不同类型的数据 1.1. 不同类型的数据在存储方面有各自的特性,这些特性极大地影响了数据在数据湖仓中的存储和使用方式 1.2. 结构化数据1.2.1. 在企业等组织中,只有少量的数据是结构化数据1.2.2. 结构化数据是基于事务的数据,是组织日常业务的副产品1.3. 文本数据…

结对项目-实现一个自动生成小学四则运算题目的命令行程序

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 结对项目 - 作业 - 计科22级34班 - 班级博客 - 博客园 (cnblogs.com)这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序成员 3122004742 李思危3122004754 许佳钒github…

Paper Reading: Imbalanced ensemble learning leveraging a novel data-level diversity metric

为了解决基于现有多样性度量的学习复杂性较高的问题,本文提出了一种新的数据级多样性度量 IED。它能够直接基于训练数据集度量多样性,而不需要训练分类器,同时本文也设计了两种基于最优实例配对和贪婪实例配对的 IED 计算方法。在此基础上,本文设计了一种不平衡集成学习模型…

Git 分支本质及与 commit、HEAD、tag 的关系

基于: Git - Git 是什么? Git - 分支简介 Git - 打标签快照 在介绍 Git 分支前,需要知道什么是 commit 对象,介绍 commit 对象前,需要先了解 Git 保存数据的方式。Git 直接记录快照,而非差异比较。 从概念上来说,其它大部分版本控制系统(包括 Subversion 和近似工具)以…

深度讲解-互联网算法备案指南和教程

随着人工智能和大数据技术的迅猛发展,互联网算法在内容推荐、用户画像、智能客服等领域发挥着越来越重要的作用。然而,算法的广泛应用也带来了潜在的安全风险和合规挑战。为了规范互联网算法的开发与应用,国家互联网信息办公室等相关部门发布了《互联网算法备案管理规定》,…

Git 分支本质及与 commit、HEAD、tag 之间的关系

基于: Git - Git 是什么? Git - 分支简介 Git - 打标签快照 在介绍 Git 分支前,需要知道什么是 commit 对象,介绍 commit 对象前,需要先了解 Git 保存数据的方式。Git 直接记录快照,而非差异比较。 从概念上来说,其它大部分版本控制系统(包括 Subversion 和近似工具)以…

k8s 分布式存储平台 -- Longhorn

目录一、什么是 Longhorn二、架构设计1、工作原理2、工作流程3、基于微服务设计的优势三、安装1、安装要求2、使用 Longhorn 命令行工具(验证方式一)3、使用环境检查脚本(验证方式之二)3.1、安装 jq3.2、运行脚本4、安装 open-iscsi4.1、SUSE 和 openSUSE4.2、Debian 和 Ub…

全网最适合入门的面向对象编程教程:53 Python 字符串与序列化-字符串与字符编码

在 Python 中,字符串是文本的表示,默认使用 Unicode 编码,这允许你处理各种字符集,字符编码是将字符转换为字节的规则,常见的编码包括UTF-8、UTF-16和ASCII。全网最适合入门的面向对象编程教程:53 Python 字符串与序列化-字符串与字符编码摘要: 在 Python 中,字符串是文…

【基础岛第3关】浦语提示词工程实践

[to2024-09-25 18:32:11 星期三c] 案例描述 0、前期准备 创建开发机 0.1 环境配置创建虚拟环境并激活创建虚拟环境conda create -n langgpt python=3.10 -y conda activate langgpt 2. 安装必要的库 # 安装一些必要的库 conda install pytorch==2.1.2 torchvision==0.16.2 torc…

9月27日swing知识点

swing是一系列图形用户界面的控件的集合 Swing中GUI类分为三大类: 容器类 JFrame、JPanel、JScrollPane UI组件类 JLabel、JTextField、JTextArea、JButton JCheckBox、JRadioButton、JComboBox 帮助类 Color、Font、Dimension 这三者的依存关系为组件必须依存在顶层容器中,组…

软件工程结对作业

这个作业属于哪个课程 软件工程这个作业要求在哪里 结对作业要求这个作业的目标 设计一个软件的方案原型学号 102202109(我)《构建之法》第三章与第八章读后感 第三章:软件工程师的成长 1.1 个人能力的衡量与发展 在《构建之法》第三章中,作者详细阐述了软件工程师的成长路…