面向对象封装的应用

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

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

继续努力,终成大器!

Python面向对象之数据封装的应用及配置文件的更多相关文章

  1. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  2. Python面向对象编程指南

    Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...

  3. Python面向对象-day07

    写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心 ...

  4. Python面向对象中的继承、多态和封装

    Python面向对象中的继承.多态和封装 一.面向对象的三大特性 封装:把很多数据封装到⼀个对象中,把固定功能的代码封装到⼀个代码块, 函数,对象, 打包成模块. 这都属于封装思想. 继承:⼦类可以⾃ ...

  5. 三十九、python面向对象一

    A.python面向对象 1.面向对象基础:面向对象三个特性:封装,继承,多态C# java 只能用面向对象编程Ruby,python 函数+面向对象 函数式编程:def 函数def f1(a): r ...

  6. Python面向对象之:三大特性:继承,封装,多态以及类的约束

    前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...

  7. Python面向对象的高级编程

    数据封装.继承和多态只是面向对象程序设计中最基础的3个概念.在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能. 我们会讨论多重继承.定制类.元类等概念. 使用__slots__ ...

  8. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  9. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

随机推荐

  1. Linux无写权限打zip

    opt下tiger.txt没权限得时候可以这样直接用zip打包 zip /tmp/1.zip /opt/tiger.txt

  2. 如何为Windows服务增加Log4net和EventLog的日志功能。

    一.简介 最近在做一个项目的时候,需要该项目自动启动.自动运行,不需要认为干预.不用说,大家都知道用什么技术,那就是 Windows服务.在以前的Net Framework 平台下,Windows 服 ...

  3. Net6 DI源码分析Part1 ServiceCollection、ServiceDescriptor、ServiceLifetime、IServiceProvider

    ServiceCollection.ServiceDescriptor.ServiceLifetime.IServiceProvider Microsoft.Extensions.Dependency ...

  4. js window.event

    转载请注明来源:https://www.cnblogs.com/hookjc/ 描述event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的 ...

  5. 经纬坐标(BLH)数据创建.kml文件小工具设计 Java版

    技术背景 KML,是标记语言(Keyhole Markup Language)的缩写,最初由Keyhole公司开发,是一种基于XML 语法与格式的.用于描述和保存地理信息(如点.线.图像.多边形和模型 ...

  6. 03并发编程(多道技术+进程理论+进程join方法)

    目录 03 并发编程 03 并发编程

  7. 私有化轻量级持续集成部署方案--03-部署web服务(上)

    提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 这一篇主要讲述部署一个 Web 项目,项目是我曾经搞的一个 VUE 模板项目:https://github.com/ ...

  8. Apache虚拟主机的搭建及相关问题解决

    在开发的过程中,很多时候项目的部署都需要在本地进行虚拟服务器的模拟搭建,所以具体的配置流程为下,并且把自己遇到的问题跟大家分享. 1.Apache配置文件httpd.conf 找到   # Virtu ...

  9. 【Azure 应用服务】应用代码需要客户端证书进行验证,部署到App Service后,如何配置让客户端携带证书呢?

    问题描述 .NET 6 MVC应用,代码中要求客户端访问时候必须携带正确的证书,如果不携带或者携带错误的证书,都会得到 HTTP ERROR 403 Forbidden 错误 在App Service ...

  10. JAVA 1.对象和封装

    1. 2. 3.Java类里面属性可以付初使值 4.属性的名字一小写开头 5 6.构造方法 1.语法:       7.staitc的应用  1.statia可以用来修饰:方法,属性,代码块 , st ...