zoukankan      html  css  js  c++  java
  • day23 xml 面向对象编程

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

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

    1.1 首先标签文档的格式:

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

         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_ _ 指向该对象所属类的名称空间,故对象可以访问类中的属性,给对象新增修改属性:【对象. 属性 = 值】

                                      

                              

  • 相关阅读:
    绘制矩形
    绘制线条
    画直线
    画弧线
    绘制贝塞尔曲线
    我关注的一些博客或资源链接
    vim必记指令
    mac下使用vim gcc/g++ 编译cpp(c++)文件并运行
    机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size
    正则化方法:L1和L2 regularization、数据集扩增、dropout
  • 原文地址:https://www.cnblogs.com/qingqinxu/p/10869499.html
Copyright © 2011-2022 走看看