Python 快速教程(基礎篇10):反過頭來看看

發表於2015-10-26

從最初的“Hello World”,走到物件導向。該回過頭來看看,教程中是否遺漏了什麼。

我們之前提到一句話,”Everything is Object”. 那麼我們就深入體驗一下這句話。

 

需要先要介紹兩個內建函式,dir()和help()

dir()用來查詢一個類或者物件所有屬性。你可以嘗試一下

>>>print dir(list)

help()用來查詢的說明文件。你可以嘗試一下

>>>print help(list)

(list是Python內建的一個類,對應於我們之前講解過的列表)

 

list是一個類

在上面以及看到,表是Python已經定義好的一個類。當我們新建一個表時,比如:

>>>nl = [1,2,5,3,5]

實際上,nl是類list的一個物件。

 

實驗一些list的方法:

>>>print nl.count(5)       # 計數,看總共有多少個5

>>>print nl.index(3)       # 查詢 nl 的第一個3的下標

>>>nl.append(6)            # 在 nl 的最後增添一個新元素6

>>>nl.sort()               # 對nl的元素排序

>>>print nl.pop()          # 從nl中去除最後一個元素,並將該元素返回。

>>>nl.remove(2)            # 從nl中去除第一個2

>>>nl.insert(0,9)          # 在下標為0的位置插入9

總之,list是一個類。每個列表都屬於該類。

Python補充中有list常用方法的附錄。

 

運算子是特殊方法

使用dir(list)的時候,能看到一個屬性,是__add__()。從形式上看是特殊方法(下劃線,下劃線)。它特殊在哪呢?

這個方法定義了”+”運算子對於list物件的意義,兩個list的物件相加時,會進行的操作。

>>>print [1,2,3] + [5,6,9]

 

運算子,比如+, -, >, <, 以及下標引用[start:end]等等,從根本上都是定義在類內部的方法。

 

嘗試一下

>>>print [1,2,3] – [3,4]

會有錯誤資訊,說明該運算子“-”沒有定義。現在我們繼承list類,新增對”-“的定義

內建函式len()用來返回list所包含的元素的總數。內建函式__sub__()定義了“-”的操作:從第一個表中去掉第二個表中出現的元素。如果__sub__()已經在父類中定義,你又在子類中定義了,那麼子類的物件會參考子類的定義,而不會載入父類的定義。任何其他的屬性也是這樣。

(教程最後也會給出一個特殊方法的清單)

 

定義運算子對於複雜的物件非常有用。舉例來說,人類有多個屬性,比如姓名,年齡和身高。我們可以把人類的比較(>, <, =)定義成只看年齡。這樣就可以根據自己的目的,將原本不存在的運算增加在物件上了。

 

下一步

希望你已經對Python有了一個基本瞭解。你可能躍躍欲試,要寫一些程式練習一下。這會對你很有好處。

但是,Python的強大很大一部分原因在於,它提供有很多已經寫好的,可以現成用的物件。我們已經看到了內建的比如說list,還有tuple等等。它們用起來很方便。在Python的標準庫裡,還有大量可以用於作業系統互動,Internet開發,多執行緒,文字處理的物件。而在所有的這些的這些的基礎上,又有很多外部的庫包,定義了更豐富的物件,比如numpy, tkinter, django等用於科學計算,GUI開發,web開發的庫,定義了各種各樣的物件。對於一般使用者來說,使用這些庫,要比自己去從頭開始容易得多。我們要開始攀登巨人的肩膀了。

 

謝謝你的關注,

歡迎來到Python的世界。

 

總結

len() dir() help()

資料結構list(列表)是一個類。

運算子是方法

相關文章