day23 xml 面向对象编程

今日内容:xml模块   概念,类与对象的关系,类的定义,对象的创建,属性的访问顺序,类和对象的名称空间是独立的

一、xml  : 一个标签语言,一般用来作配置文件,也可用来做文件传输。python中的 xml就是一个解析标签文档的模块

1.1 首先标签文档的格式:

     1) 双标签<tag>文本<\tag>:     

     2) 单标签<tag\>,没有文档,一般用于设计文档的结构,如换行等  <tr/>:表示换行

1.2  模块导入:import xml.etree.ElementTree  as  ET

                        from xml.etree.ElementTree import Element

1.3 . 所有的修改【增删改都需要写入文件】

tree = ET.parser('目标文件‘) ==>  获得文档对象

root = tree.getroot()  # type:Element     ==> 得到一个根标签【声明一个类型,可以点出相应的语法】

-- 查: root.iter()全文找所有     find()子层第一个       findall()子层所有

 root.iter()  :   可以没有参数,返回一个迭代器对象,里面是所有的标签的内存地址,可以for 循环遍历每一个标签内存地址

                有参数: 标签名(’country‘),返回一个迭代器对象,里面是所有层级的country标签的内存地址,可以for 循环遍历每一个country标签的内存地址

 root.find(’country') :  一定要有参数,返回第一个子标签的内存地址,可以for循环遍历第一个‘country'下所有的了标签内存地址。

findall('country'):一定要有参数,返回一个列表【所有子标签的内存地址】。

-- 增:root.append(’year2‘)  ,

 

先要创建一个标签: 【在country节点下新增一个子标签'year2'】

count= root.find('country')  

创建一个子标签:

year2 = ET. Element('year2')

year2.text = '新年’

year2. attrib = { 'update': 'yes' }

count.append(year2)

tree.writer('new.xml', encoding = ' utf-8 ')

-- 删  root. remove(标签对象)   删除test1.xml 中所有gdppc

remove 函数需要一个标签作为参数,即要被删除的标签,---只能由父标签删除子标签【避免不存在无法删除报错先确认标签是否存在】。

for e in root.iter('country'):
gdp = e.find('gdppc')
if gdp != None:
e.remove(gdp)
c.write('new7.xml')

-- 改:

root.text = '新值 '    ==>  修改文本

root. tag = ‘ 新名字 ’   ===> 修改标签名字

root. set ('key',  ' value' )  ==> 修改属性,有旧属性,就二次覆盖,没有就新增

tree.write('nwe8.xml',encoding='utf-8')    

二、面向对象编程:是一种编程思想,

2.1 面向对象与面向过程的优缺点对比:

      面向过程:1.关注的点就是完成任务的过程,第一步做什么,第二步做什么,是一种机械的思维,就像一条流水线

                        2. 优点是复杂事情简单化,流程化;缺点:牵一发动全身,扩展性非常低,可维护性差;应用于对扩展要求较低的程序,如:系统内核,shell脚本,计算器等。

      面向对象:编程时不需要关心具体实现的细节,而是关注对象,

                          例如把大象装进冰箱:

                        1.打开冰箱,2.塞入大象,3.关闭冰箱   => 典型面向过程思想,换成面向对象:找一个具备装大象这个技能的对象,然后命令他装大象。

                        2. 面向对象,对象不是凭空产生的,需提前设计对象,再使用它。

                        3. 面向对象的优点:不需要关注具体的实现细节,可以更好的关注业务逻辑。对象与对象之间是独立的,所以扩展性提高了,维护性高,复用高,活字印刷的故事

                        4. 对比面向过程而言,程序需要先设计,结构更复杂,编程复杂度提高了,无法准确预知执行结果,应用场景,对于扩展性要求性较高的程序,如QQ,微信。

                        5. 面向对象,什么是对象:1) 有特征与技能的具体存在物体就称之为对象 , 2)具有相同的特征与技能的对象的集合体就是类,是一种抽象的概念:人类,车,食物。

--  类与对象的关系: 现实生活中,先有实实在在的对象,再抽象出类的概念  ;   代码中,必须先定义一个类,才能产生实例一个对象。【必须先告诉计算机这个对象是什么样的,有什么技能】

-- 定义一个类:class 关键字,类名(大驼峰)+ 冒号,类内可以定义变量,=>属性, 定义函数=> 方法, 类在定义时就被解释器解释执行了

--  产生对象:类名+括号调用类就产生一个对象。

--  属性的访问顺序:类与对象都有自己独立的名称空间  |    属性的访问:类访问类的,不能访问对象的; 对象优先访问对象自己的,自己没有就在所属类中寻找,

                               定义类的时候产生一个类的名称空间,=> Teacher._ _dic_ _  查看名称空间

                               产生对象的时候,就产生了一个对象的名称空间,对象内有一个_ _class_ _ 指向该对象所属类的名称空间,故对象可以访问类中的属性,给对象新增修改属性:【对象. 属性 = 值】

                                  

                          

posted @ 2019-05-15 15:01  胖啊  阅读(152)  评论(0编辑  收藏  举报