Python面向对象之数据封装的应用及配置文件

面向对象封装的应用

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)

image-20220127211521189

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. 添加与删除

image-20220127212526341

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()

image-20220127220146765

image-20220127215549869

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

继续努力,终成大器!

posted @ 2022-01-27 22:05  紫青宝剑  阅读(154)  评论(0编辑  收藏  举报