XML模塊,面向對象思想與類的定義

 

今日內容python

XML模塊,面向對象思想,類的定義shell

1.XML模塊編程

xml是一種可擴展的標記語言格式以下瀏覽器

使用 <> 做爲標籤格式ruby

<tag style: '' color:read '' > 123 </tag>微信

標籤的三個組成部分:app

tag : 是標籤名字函數

123:是文本內容spa

<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.類和對象的名稱空間是獨立的

相關文章
相關標籤/搜索