面向对象封装的应用

1.配置文件

1.1 ini配置文件

ini 文件是Initialzation File的缩写,平时用于存储软件的配置文件。例如:MySQL数据库的配置文件(my.ini)

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\\softnew\\MYSQL\\mysql-5.7.20-winx64
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB [custom]
key1=value1
key2=this is my custom
[节点]
# 注释 #
键=值
[节点下可以有多对键值]

这种格式可以直接使用文件操作函数进行open,自己处理较麻烦,所以 Python 提供了更方便的方式。

1.2 configparser 包

1.2.1 获取节点
import configparser

# 实例化对象
config=configparser.ConfigParser()
# 读取文件
config.read('./my.ini',encoding='utf-8')
# 获取所有的节点
ret=config.sections()
print(ret) # 输出
['mysql', 'mysqld', 'custom']
1.2.2 获取节点下的键值
# 实例化对象
config=configparser.ConfigParser()
# 读取文件
config.read('./my.ini',encoding='utf-8')
# 获取节点下的键值
# ret=config.items("custom")
# print(ret)#[('key1', 'value1'), ('key2', 'this is my custom')],返回元组键值(键,值) # 循环获取键值
for key,value in config.items("custom"):
print(key,value)

1.2.3 获取节点下键对应的值
config=configparser.ConfigParser()
config.read('./my.ini',encoding='utf-8')
# 传入参数,节点,和键的名字
result=config.get("custom","key1")
print(result) # 输出
>>> value1
1.2.4 其他

1.判断是否存在节点

# 判断是否存在节点
config=configparser.ConfigParser()
config.read('./my.ini',encoding='utf-8')
ret1=config.has_section("mysql")
ret2=config.has_section("aaaa")
print(ret1,ret2) # 输出
>>> True False
  1. 添加与删除

2.面向对象的封装

# -*- coding: utf-8 -*-
'''
@Time : 2022/1/13 18:58
@Author : ziqingbaojian
@File : 01.封装应用-加载配置文件.py
'''
import configparser
class ConfigContext:
def __init__(self):
self.url=str
self.pool_size=int
self.debug=int
self.debug_ip=str
self.request_timeout=str
def load_config():
# 读取 ini 文件
config_parser=configparser.ConfigParser()
config_parser.read("settings.ini",encoding='utf-8') obj=ConfigContext()
for key,convert in obj.__dict__.items():
# 获取settings中的值
value=config_parser.get('settings',key)
# 转换成指定的数据类型
target_type_value=convert(value)#将读取到的值进行转换
# 使用反射机制进行赋值
setattr(obj,key,target_type_value)
# 返回赋值好的对象
return obj def run():
data_dict=load_config()
# 直接通过对象来获取配置文件中的内容
print(data_dict.url)
print(data_dict.pool_size,type(data_dict.pool_size)) if __name__ == '__main__':
run()

总结:体现了类的三大特性中的数据封装,经常用作小型软件的配置文件的使用。

继续努力,终成大器!

最新文章

  1. 项目编码规范(Ali)
  2. centos 域名硬解析(linux)
  3. (转载)数据库出现ORA-00283/ORA-01610的问题
  4. Eclipse启动tomcat时出现报错-拒绝访问
  5. thinkphpcmf框架中的短信验证!
  6. xcode6 真机运行报错 Command /usr/bin/codesign failed with exit code 1
  7. Swiper之滑块2
  8. NetFlow网络流量监测技术的应用和设计(转载)
  9. H5单页面架构:自定义路由 + requirejs + zepto + underscore
  10. Ural 1197 - Lonesome Knight
  11. hdu1394--Minimum Inversion Number(线段树求逆序数,纯为练习)
  12. 大型网站技术架构 核心原理与案例分析 pdf
  13. 错误Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
  14. ASP.NET MVC 自定义模型绑定1 - 自动把以英文逗号分隔的 ID 字符串绑定成 List<int>
  15. Spring基础篇——Spring的AOP切面编程
  16. saltstack一
  17. CMake for MFC example
  18. PAT 1019 General Palindromic Number
  19. 在javascript中toString 和valueOf的区别
  20. Linux shell命令:用 !$ 防止误操作

热门文章

  1. 火山引擎MARS-APM Plus x 飞书 |降低线上OOM,提高App性能稳定性
  2. 边带权并查集 学习笔记 & 洛谷P1196 [NOI2002] 银河英雄传说 题解
  3. python pyautogui
  4. bom案例2-弹出层
  5. 基于PXIe接口的CoaXpress高速相机图像采集、回放
  6. JavaScript的原生Ajax解析
  7. VMware Workstation批量克隆虚拟机
  8. 记录一次elasticsearch-5.6.4宕机排查经历
  9. 016 Linux 卧槽,看懂进程信息也不难嘛?top、ps
  10. 『无为则无心』Python面向对象 — 47、Python中的self详解