day-23面向对象

xml模块html

ML 全称  可扩展标记语言
<tag></tag> 双标签
<tag/> 单标签 没有文本 通常用于设计文档结构 例如换行等
<tr/> 表示换行


<tag style="color:red" age="18">12345</tag>
一个标签的完整组成 有三个部分
tag 是标签名称
12345 是文本内容 text
name = "jack" 是标签的属性

import xml.etree.ElementTree as ET
# 打开一个文档 获得一个元素树(XML文档)
tree = ET.parse("test1.xml")
# 获取根标签
root = tree.getroot()

 


其余的规范
1.又开始就必须有结束
2.全部属性值必须包含在双引号里面
3.只能有一个根标签 (最外层只能有一个标签)
4.开始标签和结束标签的顺序是相反的 最早打开谁 就最后关闭谁 最后打开的最早关闭
文档声明可不写 主要是告诉浏览器 该怎么解析这个文件
xml模块是自带的 不须要安装

与json的区别
xml 是一种可扩展的标记语言
能够高度自定义文档的结构 数据类型 标签的含义等等
因此扩展性远比JSON要强

json更加适用于 先后台数据交换 优势 轻量级 跨平台 语法简洁
xml更多用来做为配置文件 固然 python不太经常使用
html就是一种xml

解析xml获得一个tree对象后 查找标签的4种方式

1.iter()
若是没有参数则查找全部标签
若是有参数则查找全部名字匹配的标签
查找范围 为全文

2.find()
必须给参数
查找当前标签的子标签 返回第一个名字匹配的

3.findall()
必须给参数
查找当前标签的子标签 返回全部名字匹配的

4.直接遍历某个标签
返回的是这个标签的全部子标签
es = root.findall("country")
# 获取某个标签的 标签名 属性 以及文本
# for e in es:
#     print(e.tag) # 标签名称
#     print(e.attrib) # 标签的全部属性 返回一个字典
#     print(e.text) # 标签的文本内容
# # 修改文本
# root.text = "这是跟标签的文本"
# # 修改属性 没有则添加 有则覆盖
# root.set("name","jack")
# # 修改标签名字
# root.tag = "data"
#
# tree.write("test2.xml",encoding="utf-8",xml_declaration=True)
# 把test1.xml 中全部year标签的text加1
# tree = ET.parse("test1.xml")
# root = tree.getroot()
# for e in root.iter("year"):
#     e.text = str(int(e.text) + 1)
#
#
# tree.write("test1.xml")
# 把test1.xml 中全部gdppc删除
# remove 函数 须要一个标签做为参数 即要被删除的标签   而后只能有父标签来删除子标签
# tree = ET.parse("test1.xml")
# root = tree.getroot()
#
# for c in root.iter("country"):
#     gdppc = c.find("gdppc")
#     if gdppc != None:
#         c.remove(gdppc)
#
# tree.write("test4.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("test5.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("test6.xml")

面向对象编程python

面向过程编程思想
关注的点就是完成任务的过程
第一步
第二步
一步一步按照固定顺序来完成任务
是一种机械化的思惟,就像一条流水线,指定流水线只能生产指定产品
缺点:
牵一发而动全身 扩展性很是低,可维护性差
优势:
将复杂的事情,简单化,并流程化
应用场景:
对扩展要求较低的程序
系统内核,shell脚本,计算器啥的
面向对象编程
是一种编程思想
面向:朝着 向着
对象是什么
面向对象关注点是对象,把你的思惟角度从具体操做这 变成了一个指挥者
例如把大象装进冰箱
1.打开冰箱
2.塞入大象
3.关闭冰箱
以上就是典型面向过程思想
换成面向对象
找一个具有装大象这个技能的对象 而后命令它装大象

注意:对象不是凭空产生的 须要咱们本身先设计对象 而后在使用它们

面向对象优势:
不须要在关注具体的实现细节 能够更好的关注业务逻辑
扩展性提升了,维护性高,复用性高
缺点:
对比面向过程而言.程序须要先设计,结构更复杂,编程复杂度提升了
没法准确预知执行结果
应用场景:
对于扩展性要求较高的应用程序
qq,微信,王者荣耀
  
    面向对象是一种编程思想,让你不须要关心具体实现细节,而是关注对象
    优势:扩展性高,复用性,维护性
什么是对象?
万事万物都是对象
对象:具有某种特征与行为的集合体而且是具体存在的就称之为对象
如来佛祖,owen
类: 某些具有相同特征和相同行为的集合体 ,是一种抽象概念 类型==类
人,动物,狗,老男孩的老师

特征==属性
行为==技能


对象和类的关系
在生活中 先有对象 再有类
在代码中 必须现有类 才能产生对象 (由于你须要提早告诉计算机这个对象是什么样的有什么技能)

编程思想不是某一个具体语言或技术 ,
面向对象的语言:
python,Java,C++,C#
面向过程:
C,ruby
 
类名称为大驼峰命名法
全部单词首字母大写
class Student:
    # 描述特征使用变量 (属性)
    school = "olbBoy"

    # 描述技能使用函数 (方法)
    def say_hi():
        print("hello i am tiger")

    # class中的代码仅在第一次加载时执行
    print("test...")
    pass
# 调用类来得到一个对象
# stu1 = Student()
# stu1.say_hi()
 
# 给p1对象单独添加了country
p1.country = "USA"
# 在访问时优先访问本身名称空间的内容 若是找不到 会自动找类中的属性
print(p1.country)
print(Person.country)

# 每一个对象都会存储本身所在类的地址 可使用__class__来访问
print(p1.__class__)
print(type(p1))

# 查看名称空间中的内容
print(p1.__dict__)
print(Person.__dict__)
相关文章
相关标签/搜索