• 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

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

    继续努力,终成大器!

  • 相关阅读:
    OnEraseBkgnd、OnPaint与画面重绘
    .编译ADO类DLL时报错的解决方案
    VC列表框样式
    Codeforces 131D. Subway 寻找环树的最短路径
    Codeforces 103B. Cthulhu 寻找奈亚子
    Codeforces 246D. Colorful Graph
    Codeforces 278C. Learning Languages 图的遍历
    Codeforces 217A. Ice Skating 搜索
    Codeforces 107A. Dorm Water Supply 搜图
    Codeforces 263 D. Cycle in Graph 环
  • 原文地址:https://www.cnblogs.com/Blogwj123/p/15851364.html
Copyright © 2020-2023  润新知