1. 程式人生 > >XML模塊與類的定義

XML模塊與類的定義

python self 交換 所有 gen class red 完整 無法

xml模塊

xml介紹:

  --XML 全稱 可擴展標記語言

  --<tag></tag> 雙標簽  標簽中間可以加入文本信息

  --<tag/>單標簽 沒有文本 ,一般用於設計文檔結構,例如換行<tr/>

<tag style="color:red" age="18">123sddds</tag>

  --一個完整的標簽有三部分組成

  --tag   -->標簽名稱 tag

  --123sddds -->文本內容 text 

  --age = ‘18‘ -->是標簽的屬性

xml的其他規範

  --1、有開始就必須有結束

  --2、所有的屬性值必須包含在雙引號裏

  --3、只能由一個根標簽(最外層只能有一個標簽)

  --4、開始標簽和結束標簽的順序是相反的,最先打開誰,就最後關閉誰

  --文檔開頭可以寫上那個文檔聲明,告訴瀏覽器該怎麽解析該文件(可寫可不寫)

與json的區別

  --1、xml 是以重可擴展的標記語言 (內容形式比json靈活)

  --2、可以高度自定義文檔的結構、數據類型、標簽含義等等

json更加適用於前後臺數據交換。優點 -->輕量級、跨平臺、語法簡單

xml更多用來作為配置文件 當然python不常用,python有更為簡單的configparser模塊來解析配置文件

xml的使用方法

#1、導入模塊,可以起別名

import xml.etree.ElementTree as ET

#2、獲得元素樹

tree = ET.parse(‘文件名‘)  -->括號裏文件在當前目錄下直接文件名,不在的話就用絕對路徑

#3、獲得根標簽

root = tree.getroot()

#4、查找標簽下的子標簽-->按標簽名稱查找

  --1、find()  遍歷所有的子標簽,返回第一個查找到的標簽,沒有查找到就返回None

  --2、findall() 遍歷所有的子標簽,返回第所有查找到的標簽,沒有查找到返回一個空列表

  --3、iter()   查找根標簽下的所有標簽,返回所有查到的標簽,

         如果是空括號,就會把所有的標簽列出來

  --4、直接遍歷某個標簽獲得的時這個標簽下的所有子標簽

  --5、root.tag 獲取的是標簽的標簽名

  --6、root.text 獲取的是標簽的文本內容

  --7、root.attrib 獲取的是標簽的屬性,返回的是一個字典

#5、增加子標簽

root.append(標簽對象)

  --new = ET.Element(‘標簽名‘) -->創建一個標簽對象

  --new.txt = ‘ss‘ -->為標簽添加文本信息,如果不添加,標簽就會以單標簽的形式被存進去

  --new.set(‘ddd‘,‘fff‘) -->為標簽添加屬性

  最後將標簽對象添加在root標簽下

#6、刪除子標簽

root.remove(標簽對象)    -->註意:括號裏是標簽對象而不是標簽名稱

  需要註意的是標簽它本身沒有辦法刪除自己,所以只能找到它的父級標簽

  通過它父級標簽的remove()來把他刪除

#7、改標簽對象裏面的內容

  --root.tag = ‘標簽名稱‘ -->不常用,標簽名稱基本不用改

  --root.text = ’文本信息’  -->修改標簽的內容信息

  --root.set(‘name‘,‘gdk‘)   -->修改標簽的屬性,屬性名存在就修改,不存在新添加

面向對象

面向過程

面向過程的程序設計:核心是過程,過程指的是分步驟解決問題,是一種機械的思維方式

優點:復雜的問題流程化、進而簡單化

   可以提前預知程序運行結果

缺點:一套流水線或流程解決一個問題、一旦確定好流水之後,再想拓展新功能就比較麻煩

   經常是牽一發而動全身,維護性差

應用場景:一旦完成基本很少改變的場景,例如電腦上的計算器功能或者是Linux的內核等等

面向對象

面向對象編程 -->Object Oriented Programming,簡稱OOP,是一種程序設計思想

它是將對象作為程序的基本單元

  將數據和處理數據的程序封裝到對象中,讓對象完成特定的功能

以提高軟件的復用性、靈活性和拓展性為主要目的

優點:程序員的角色發生了改變,操作者編程了指揮者,不再需要關心每個功能具體的執行細節,從而可以更多的專註邏輯

   大大提高了程序的拓展性,一個對象發生改變,對其他對象沒有影響,對象之間互相獨立

   提高了程序的靈活性、復用性強

缺點:

  需要提前設計程序,簡單的問題會變得復雜

  無法提前預知程序運行結果

類和對象

對象:特征與技能的結合體

類:就是種類,是一系列對象中相似特征和技能的結合體

定義類

  在python中,通過class關鍵字來定義類

  class Student:     -->class後面跟著的Student就是類的名字,類名用大駝峰的命名規範來命名

    gender = ‘male‘  -->特征在類中基本用常量來表示

    def sleep(self):   -->技能在類中基本上用函數表示

      pass

##類在定義時,類的內部代碼就會運行一遍,且僅在第一次加載的時候運行一遍,後續調用不會執行

##第一次執行的時候會產生一個名稱空間

創建對象    -->會把類的名稱空間拿過來

  創建對象也稱之為實例化,定義好Student類後,就可以根據Student類創建出Student的實例

  創建實例通過類名加上()實現

  stu1 = Student()  -->stu1就是對象,每個對象的內存都是獨立的

對象的屬性操作

  對象是特征與技能的結合體

  通過.語法可以為對象添加特征stu1.name = ‘dog‘、同樣也可以通過.語法來獲取對象的特征print(stu1.name) ->dog

每個對象都會存儲自己所在類的地址,可以使用__class__來訪問

print(stu1.__class__) type 底層用的就是__class__方法

查看名稱空間的內容通過__dict__方法

#給stu1添加的屬性是stu1獨有的,在訪問時優先訪問自己名稱空間,如果找不到再去訪問類的名稱空間

XML模塊與類的定義