今日内容
XML模块,面向对象思想,类的定义
1.XML模块
xml是一种可扩展的标记语言格式如下
使用 <> 作为标签格式
<tag style: ‘‘ color:read ‘‘ > 123 </tag>
标签的三个组成部分:
tag : 是标签名字
123:是文本内容
<style = ‘‘ color:read ‘‘ > : 是标签的属性,在这里是指标签的颜色
<tag></tag> : 双标签,有头有尾
<tag> : 单标签,没有文本,一般用于设计的结构,比如换行等
作为一门语言,那他的文件格式肯定有一定的规范:
1. 有开始,必须有结束
2. 所有的 属性 必须在双引号内
3.只能有一个根标签(最外层只能有一个标签)
4.开始标签和结束标签的顺序是相反的,最先打开谁,就最后关闭谁,最后打开的最后关闭
# 文档可以写声明,也可以不写,声明的主要作用是告诉浏览器该如何解析
获取某个标签的详细内容:
import xml.etree.ElementTree as ET tree = ET.parse(‘test1.xml‘) # 解析xml文件 root = tree.getroot() # 获取根标签 # 在根标签下找到所有的country子标签 es = root.findall(‘country‘) # for e in es: # print(e.tag) # e.tag 获取标签名称 # print(e.attrib) # e.attrib 获取标签的所有属性,返回一个字典 # print(e.text) # e.text 获取标签的文本内容 # 获取所有国家的 邻居的名称 for c in es: print(‘%s的邻居如下:‘% c.attrib.get(‘name‘)) # 每次获得一个子标签内带‘name‘的key for n in c.findall(‘neighbor‘): # 每次获取一个kye是‘neighbor‘的子标签 print(n.attrib.get(‘name‘)) # 输出结果是依次对应的是name 对应的 neighbor print(‘更新时间:%s‘% c.find(‘year‘).text) # 找到子标签‘year‘中的文本内容 print(‘-----------‘)
修改标签的某个属性
import xml.etree.ElementTree as ET from xml.etree.ElementTree import Element # tree = ET.parse(‘test.xml‘) # 解析一个文件 # root = tree.getroot() # 获取根标签 # 修改文本 # root.text = ‘这是根标签的文本‘ # # # 修改属性,没有则添加,有则覆盖 # root.set(‘name‘,‘jack‘) # # # 修改标签名字 # root.tag = ‘data‘ # # tree.write(‘test.xml‘,encoding=‘utf-8‘,xml_declaration=True) # declaration:是否添加文档注释 # 把test.xml 中所有vear 标签的text 改值 # tree = ET.parse(‘test1.xml‘) # root = tree.getroot() # for e in root.iter(‘year‘): # e.text = str(int(e.text) +5) # tree.write(‘test1.xml‘) # 把test1.xml 中的所有gdppc删除 # remove 函数,需要一个标签作为参数,即要被删除的标签,然后只能有父类标签来删除子标签 # tree = ET.parse(‘test1.xml‘) # root = tree.getroot() # # for c in root.iter(‘country‘): # 循环遍历country 子标签 # gdppc = c.find(‘gdppc‘) # 查找‘gdppc‘ # if gdppc != None: # 如果有值 # c.remove(gdppc) # 那么就删除gdppc # # tree.write(‘test2.xml‘) # 添加标签 tree = ET.parse(‘test1.xml‘) root = tree.getroot() # type:Element # 创建需要被添加的子标签 new_tag = Element(‘ThisIsNewTag‘) new_tag.text = ‘123‘ # 设置文本 root.append(new_tag) # 添加到root下 tree.write(‘test3.xml‘) # 写入文件
代码生成xml文档
import xml.etree.ElementTree as et # 创建标签 tag = et.Element(‘data‘) tag.text = ‘123‘ tag.set(‘name‘,‘jack‘) # 创建一个元素树,并把tag添加到上面 tree = et.ElementTree(tag) tree.write(‘test4.xml‘)
2.面向对象思想
面向对象的优点:
不需要关注具体细节,可以更好的关注业务逻辑,扩展性提高了,维护性高,复用性高
缺点:
对比面向过程而言,程序需要先设计,结构更复杂,编程复杂度提高了,无法准确预知执行结果
应用场景:
对于扩展性要求较高的应用程序
对象:
具备某种特征与行为的集合体,并且是具体存在的就是对象
类:
具备相同特性和相同行为的集合体,是一种抽象的概念
对象和类的方法:
在生活中,先有对象,再有类
在代码中,先有类,再有对象
类的定义:
关键字:class
class ’类名‘ 类名的书写规范:使用大驼峰,所有单词首字母大写
# 类的使用方法与定义 class Student: # 描述特征使用变量 school = ‘oldBoy‘ # 描述技能使用函数(方法) def say_hi(): print(‘hello i am tiger‘) # class 中的代码仅在第一次加载时执行 print(‘华丽的分割线--------‘) pass print(Student.say_hi) Student.say_hi() # 类方法可以使用.来调用内部的所有数据,包括函数 print(Student.school) stu1 = Student() # 也可以赋值给其他变量 stu1.say_hi() # 其他变量也同样拥有类的功能
对象的使用:
class Person: country = ‘China‘ def eat(self): print(‘正在吃饭中。。。‘) p1 = Person() # 拿到类这个对象 # print(p1) p1.eat() # 调用类中的函数 # 为对象添加属性 p1.name = ‘王勇‘ # 在p1对象中添加一个叫 ‘王勇‘ 的值,然后赋值给name,并没有真的添加到类中,原类没有修改 print(p1.name) # 给p1 对象单独添加country ,它并不会更改到类中 p1.country = ‘USA‘ # 在访问时优先访问自己的名称空间,如果找不到,会自动去类中寻找对应的属性 print(p1.country) # ‘USA‘ print(Person.country) # ‘China‘ # 每个对象都会存储自己所在类的地址,可以使用__class__来访问 print(p1.__class__) print(type(p1)) # type() 原理就是调用了__class__方法 # 查看名称空间中的内容 print(p1.__dict__) print(Person.__dict__) # 还可以在别的文件中调用类
原文:https://www.cnblogs.com/liguodeboke/p/10871523.html