XML模块,面向对象思想与类的定义
今日内容
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__)
- # 还可以在别的文件中调用类
面向过程编程思想
关注的点就是完成任务的过程
第一步
第二步
一步一步按照固定顺序来完成任务
是一种机械化的思维,就像一条流水线,指定流水线只能生产指定产品
缺点:
牵一发而动全身 扩展性非常低,可维护性差
优点:
将复杂的事情,简单化,并流程化
应用场景:
对扩展要求较低的程序
系统内核,shell脚本,计算器啥的
面向对象编程
是一种编程思想
面向:朝着 向着
对象是什么
面向对象关注点是对象,把你的思维角度从具体操作这 变成了一个指挥者
例如把大象装进冰箱
1.打开冰箱
2.塞入大象
3.关闭冰箱
以上就是典型面向过程思想
换成面向对象
找一个具备装大象这个技能的对象 然后命令它装大象
注意:对象不是凭空产生的 需要我们自己先设计对象 然后在使用它们
面向对象优点:
不需要在关注具体的实现细节 可以更好的关注业务逻辑
扩展性提高了,维护性高,复用性高
缺点:
对比面向过程而言.程序需要先设计,结构更复杂,编程复杂度提高了
无法准确预知执行结果
应用场景:
对于扩展性要求较高的应用程序
qq,微信,王者荣耀
面向对象是一种编程思想,让你不需要关心具体实现细节,而是关注对象
优点:扩展性高,复用性,维护性
什么是对象?
万事万物都是对象
对象:具备某种特征与行为的集合体并且是具体存在的就称之为对象
如来佛祖,owen
类: 某些具备相同特征和相同行为的集合体 ,是一种抽象概念 类型==类
人,动物,狗,老男孩的老师
特征==属性
行为==技能
对象和类的关系
在生活中 先有对象 再有类
在代码中 必须现有类 才能产生对象 (因为你需要提前告诉计算机这个对象是什么样的有什么技能)
编程思想不是某一个具体语言或技术 ,
面向对象的语言:
python,Java,C++,C#
面向过程:
C,ruby
今天讲到的知识点
xml模块
tree = ElementTree.parser("文件")
root = tree.getroot()
# 查
root.iter/find/findall
# 增
root.append(标签对象)
# 删
root.remove(标签对象)
修改
root.text = "新值"
root.tag = "新名字"
root.set("key","value")
tree.write()
1.面向对象是什么?
2.面向对象与面向过程的优缺点对比 以及使用场景对比
3.什么是对象 什么是类
4.类和对象的关系
5.如何定义一个类
6.如何创建对象
7.属性的访问顺序
8.类和对象的名称空间是独立的
XML模块,面向对象思想与类的定义的更多相关文章
- XML模块与类的定义
xml模块 xml介绍: --XML 全称 可扩展标记语言 --<tag></tag> 双标签 标签中间可以加入文本信息 --<tag/>单标签 没有文本 ...
- 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图
面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...
- day23 xml模块、面向对象编程介绍
今日内容: 1.xml模块 2.面向对象编程 一.xml模块 什么是xml? xml是一种可扩展的标记语言 xml语言的语法: <person name="jack"> ...
- configparser模块,subprocess 模块,xlrd,xlwt ,xml 模块,面向对象
1. configparser模块 2.subprocess 模块 3.xlrd,xlwt 4.xml 模块 5.面向对象 面向对象是什么? 是一种编程思想,指导你如何更好的编写代码 关注点在对象 具 ...
- 第四节:详细讲解Java中的类和面向对象思想
前言 大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢 类和面向对象 在Java中怎样理解对象,创建对象和引用:什么是引用,对于基础学习的同学,要深入了解引用.示例:Stri ...
- 这次齐了!Java面向对象、类的定义、对象的使用,全部帮你搞定
概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备自 ...
- Java:【面向对象:类的定义,静态变量,成员变量,构造函数,封装与私有,this】
本文内容: 什么是面对对象 类的定义与对象实例化 成员变量 成员变量的有效范围 成员变量的赋值 静态变量.方法与实例变量.方法 构造函数 封装与私有 this关键字 注:函数和方法是一样东西.[由于我 ...
- C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)
什么是面向对象? 在软件的设计过程中的两种方式: 把程序按照算法的执行步骤来拆解,一步步实现,这是面向过程编程: 把程序按照现实世界的理解,分成不同对象,通过多个对象之间的相互作用,来完成程序的最终功 ...
- python16_day06【类、RE模块、subprocess模块、xml模块、shelve模块】
一.shelve模块 import shelve # 基于pickle模块, d = shelve.open('shelve_test') class Test(object): def __init ...
随机推荐
- mysqldump 原理
(3)分析general.log日志: [root@zstedu data]# cat zstedu.log mysqld, Version: 5.7.22-log (MySQL Community ...
- nginx第七天
nginx的proxy_buffering和proxy_cache 两个都是nginx代理中内存设置相关的参数. proxy_buffering设置 proxy_buffering主要是实现被代理服务 ...
- C# 反射简单介绍
原文:https://blog.csdn.net/wu1020300665/article/details/82958455 1.什么是反射 反射是.NET中的重要机制,通过反射,可以在运行时获得程序 ...
- 【leetcode】1283. Find the Smallest Divisor Given a Threshold
题目如下: Given an array of integers nums and an integer threshold, we will choose a positive integer di ...
- [人物存档]【AI少女】【捏脸数据】时尚
点击下载(城通网盘):3in1.zip 点击下载(城通网盘):存档.zip
- codevs 1464 装箱问题 2 x
题目描述 Description 一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3 ...
- 【CUDA 基础】2.4 设备信息
title: [CUDA 基础]2.4 设备信息 categories: CUDA Freshman tags: CUDA Device Information toc: true date: 201 ...
- npm安装cnpm时候报错code EINTEGRITY
npm安装cnpm时候报错code EINTEGRITY错误展示 PS C:\Users\by\Desktop\element_ui_demo> npm install --g npmnpm ...
- 如何卸载zabbix且删除
1.彻底卸载zabbix和删除残留文件 1 2 [root@localhost etc]# service zabbix stop //这个命令是停止服务 [root@localhost et ...
- Runtime Error R6034 Application has attempt to load the C runtime library incorrectly
1.问题描述 vs2015 去开发一个写入pg数据库的程序,使用libpqxx.dll,libpq.dll,这个库文件之前是用vs2008的程序中复制过来的,基于的运行时库应该是vs2008,现在开发 ...