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)
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
- 添加与删除
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面向对象之数据封装的应用及配置文件的更多相关文章
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- Python面向对象编程指南
Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...
- Python面向对象-day07
写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心 ...
- Python面向对象中的继承、多态和封装
Python面向对象中的继承.多态和封装 一.面向对象的三大特性 封装:把很多数据封装到⼀个对象中,把固定功能的代码封装到⼀个代码块, 函数,对象, 打包成模块. 这都属于封装思想. 继承:⼦类可以⾃ ...
- 三十九、python面向对象一
A.python面向对象 1.面向对象基础:面向对象三个特性:封装,继承,多态C# java 只能用面向对象编程Ruby,python 函数+面向对象 函数式编程:def 函数def f1(a): r ...
- Python面向对象之:三大特性:继承,封装,多态以及类的约束
前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...
- Python面向对象的高级编程
数据封装.继承和多态只是面向对象程序设计中最基础的3个概念.在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能. 我们会讨论多重继承.定制类.元类等概念. 使用__slots__ ...
- python 面向对象初级篇
Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...
- Python 面向对象 基础
编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...
随机推荐
- Windows 10 Version 21h1安装
好久没安装过Windows 10系统了,这两天在下载电脑管家时,使用bing搜索,没注意就选择了第一个,安装后,噩梦就来了,非法广告.各种软件的推送,怎么也清不干净. 没办法,到PCBeta下载了最新 ...
- k8s基本概念,资源对象
kubernetes里的master指的是集群控制节点 master负责是整个集群的管理和控制 kubernetes3大进程 API server 增删改查操作的关键入口 controller man ...
- ARC-124 部分题解
E 直接统计原式不好做,注意到首先我们应该知道怎样的 \(x\) 序列是合法的,那么不妨首先来统计一下合法的 \(x\) 序列数量. 令 \(b_i\) 为 \(i\) 向右给的球数,那么有(\(i ...
- spring学习四:Spring中的后置处理器BeanPostProcessor
BeanPostProcessor接口作用: 如果我们想在Spring容器中完成bean实例化.配置以及其他初始化方法前后要添加一些自己逻辑处理.我们需要定义一个或多个BeanPostProcesso ...
- Android文件的权限概念
//通过context对象获取一个私有目录的文件读取流 /data/data/packagename/files/userinfoi.txt FileInputStream fileInputS ...
- 将一个读取流转换成bitmap对象
将一个读取流转换成bitmap对象: BitmapFactory:可以将文件,读取流,字节数组转换成一个Bitmap对象. Bitmap bitmap = Bitma ...
- 7.3php编译安装最终版
进过无数次折腾后发现编译php安装的有些难, 问题可能是自己对linux不太了解吧. [root@third src]# cd php-7.3.6 [root@third php-7.3.6]# ./ ...
- vue中的钩子函数
什么是vue的钩子函数? Vue 实例在被创建时,会经过一系列的初始化过程,初始化过程中会运行一些函数,叫做生命周期钩子函数,通过运用钩子函数,用户在可以在Vue实例初始化的不同阶段添加自己的代码,以 ...
- Bootstrap提供的CDN服务标签与下载文档
目录 1.引入Bootstrap提供的CDN服务 1.选择下载Bootstrap CDN 二:下载Bootstrap官方文档 1.进入Bootstrap官网,选择3版本中文档. 1.引入Bootstr ...
- 搭建 Nginx 服务
今日内容 上一篇测试 c出现问题 web 服务 部署 Nginx 内容详细 上一篇测试 NFS共享文件步骤 - 服务端 [root@backup ~]# yum install nfs-utils r ...