今日内容:
1、xml模块
2、面向对象编程
一、xml模块
什么是xml?
xml是一种可扩展的标记语言 xml语言的语法: <person name="jack">hello i am a person</person> 语法分为三个部分:
标签名(tag): person
属性(attribute):name = "jack",其中属性名为name,属性的值为"jack"
文本(text):hello i am a person 语法要求:
1、xml格式的文本最外层只能拥有一个根标签;
2、任何起始标签都必须要有结束标签
3、标签分为单标签(<person/>)及双标签 <person></person>
4、所有属性的值都必须是字符串格式(加上引号)
5、所有的属性都必须有值
6、标签必须是镜像的,最外层的标签最先定义最后结束,最内层的标签最后定义最先结束 与json的对比:
json是js的对象表示法,其结构简单,可以轻松的被js进行解析,多用于前后端的交互
xml是一种语言,其结构较为复杂,但是也可以高度的自定义,在Java中多用于配置文件,但是在python中使用较少
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
对于xml的解析
import xml.etree.ElementTree as ET

# 解析整个xml文件
tree = ET.parse("xml1.xml")
# 获取根目录
root = tree.getroot() print(root) # <Element 'data' at 0x000001C9AC6B9728>
print(root.tag) # 打印根标签的标签名
print(root.attrib) # 显示当前标签的属性,是一个字典
print(root.text) # 显示当前标签的文本内容,是一个字符串 # 显示标签的子孙标签 for tag in root:
print(tag) # 对root的子标签进行遍历 for tag in root.findall("country"):
print(tag) # 在子标签中查找所有标签名为country的标签 for tag in root.iter():
print(tag) # 对root所有的子孙标签进行遍历 for tag in root.iter('country'):
print(tag) # 将子孙中所有标签名为country进行遍历 for tag in root.find("country"):
print(tag) # 展示第一个标签名为country的标签下的所有子标签 # 改
# 修改标签得属性、值、增加新标签
for i in root.iter("year"):
i.text = str(int(i.text) + 1) # 修改year标签的值
i.set("aaa","") # 为year标签添加属性 aaa 值为 1
i.set("aaa","heihei") #修改year标签属性的值
tree.write('xml2.xml') # 将修改后的xml写入文件中 # 删除属性
for i in root.findall('country'):
for j in i.findall("year"):
i.remove(j) # 只有要被删除的分类有权限删除自类的标签
tree.write('xml5.xml') # 添加新节点
year2=ET.Element('year2') # 指定名称
year2.text='新年'
year2.attrib={'update':'yes'} #添加
for i in root.findall("country"):
root.append(year2) #往country节点下添加子节点
tree.write("xml7.xml")
二、面向对象
什么是面向对象?
面向对象是一种思想,相对于面向过程的关注点在完成任务的顺序,其思维角度变为了指挥者
面向对象与面向过程的优缺点:
面向过程:
优点:程序的结构简单,可以将复杂的结构简单化
缺点:
扩展性较差,一个流水线只能完成一种事情,如果想要更改其功能需要重新编写代码 面向对象:
优点:
其减少了对于具体实现过程的思考,更专注于业务的逻辑
程序的拓展性、复用性、可维护性较高
缺点:
由于专注于业务逻辑,其需要在编写程序之前需要首先对程序进行设计
面向对象的结构更加复杂,编程的复杂度更加高
无法准确预知执行的结果 使用场景:
经过上述面向对象及面向过程的编程对比,由于面向对象的可扩展性较强,所以面向对象的编程思想经常使用在对于程序扩展性较高的场景
但是,这不是说面向过程就没有应用场景,在一些对程序的扩展性要求不高的场景会使用面向过程的编程的思想
在选择面向过程及面向对象选择时应根据场景具体选择 三、类与对象
什么是类、对象及其关系?
类是一个抽象的概念,是一系列对象中相似特征与技能的结合体,不存在某一个对应的实体
对象是一个实际存在的事物,通过对象可以找到一个固定的个体
通过类可以产生一个对象,类相当于具体某一类对象的共同特征及属性的提炼结果 如何定义一个类?
定义一个类需要使用使用class关键字
class Person: # 类的名字使用大驼峰命名法
name = "aaa"
def run(self):
print(human run...)
print("class run...") # 上面就是定义了一个 人 类
lee = Person() # 使用类产生对象 # 在执行上述代码时,如果不使用类产生对象也会打印 class run...
# 这是因为在定义类时就执行了类中的代码,并且这个代码只执行一次 名称空间的访问顺序:
类和对象的名称空间是独立的
对象的属性查找顺序是: 自己的名称空间 -> 类的名称空间 -> 如果没有就报错

day23 xml模块、面向对象编程介绍的更多相关文章

  1. Python 编程核心知识体系-模块|面向对象编程(三)

    模块 面向对象编程

  2. Python(三)基础篇之「模块&面向对象编程」

    [笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE    编程之魅  Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...

  3. Python开发基础-Day17面向对象编程介绍、类和对象

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  4. python基础之面向对象编程介绍、类和对象

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  5. Java 面向对象编程介绍

    面向对象的概念 类与对象的关系 封装 面向对象 面向过程: 强调的是过程(动作) 面向对象: 强调的是对象(实体) 面向对象的特点 面向对象就是一种常见的思想,符合人们的思考习惯; 面向对象的出现,将 ...

  6. 进击的Python【第六章】:Python的高级应用(三)面向对象编程

    Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...

  7. python【第六篇】面向对象编程

    面向对象编程 一.编程范式:编程的方法论.程序员编程的“套路”及“特点”特点总结,抽象成方法.规范. 二.面向对象编程介绍: 1.描述 世界万物,皆可分类:世间万物,皆为对象:只要是对象,就肯定属于某 ...

  8. Day6 - Python基础6 面向对象编程

    Python之路,Day6 - 面向对象学习   本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发 ...

  9. Python基础6 面向对象编程

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...

随机推荐

  1. HDU 6052 - To my boyfriend | 2017 Multi-University Training Contest 2

    说实话不是很懂按题解怎么写,思路来源于 http://blog.csdn.net/calabash_boy/article/details/76272704?yyue=a21bo.50862.2018 ...

  2. BZOJ 1922: [Sdoi2010]大陆争霸 Dijkstra

    Code: #include <queue> #include <vector> #include <cstdio> #include <cstring> ...

  3. vue-cli3构建多页面应用

    创建一个项目hello-world vue create hello-worldcd hello-worldnpm run serve 在src目录下新建pages目录,在pages下新建页面 App ...

  4. C++11正则表达式初探

    C++正则表达式 在此之前都没有了解过C++的正则,不过现在大多数赛事都支持C++11了,因此有必要学习一下,用于快速A签到题. 所在头文件 #include<regex> 正则表达式语法 ...

  5. main.js中import引入css与引入js的区别

    表现:引入css样式文件能够作用到全局,而引入js文件就只能在main.js中产生作用 在 main.js 中引入的 css 都是全局生效的.引入的 js 文件只在 main.js 中生效,是因为 m ...

  6. mac -bash: ll: command not found

    在linux系统下我们经常使用ll.la命令.但在mac系统时缺没有. 提示:-bash: ll: command not found. 这是因为ll.la不是真的命令,而是一些常用命令和参数搭配的别 ...

  7. Visual Studio Code(VS code)介绍

    一.日常安利 VS code VS vode特点: 开源,免费: 自定义配置 集成git 智能提示强大 支持各种文件格式(html/jade/css/less/sass/xml) 调试功能强大 各种方 ...

  8. EBS 查看输出HTML报表问题总结

    问题一: 请求输出格式为HTML(如下图,默认浏览器输出),希望 查看输出 的时候能够实现excel输出. 解决方法: 路径:系统管理员/安装/浏览器选项 注:维护如下记录 文件格式:HTML    ...

  9. 树及其衍生算法(Trees and tree algorithms)

    1,二叉树(Binary tree) 二叉树:每一个节点最多两个子节点,如下图所示: 相关概念:节点Node,路径path,根节点root,边edge,子节点 children,父节点parent,兄 ...

  10. jQuery常用操作部分总结

    注意:$(“.xxx”)   类,一定要在前面加上点callback为完成后执行的函数名称隐藏显示:hide()   show()淡入淡出:fadeIn()  fadeOut()  fadetoggl ...