python 類的細節

2021-09-05 12:42:27 字數 2186 閱讀 5594

下面我根據mark lutz的《learning python》中的「大師眼中的oop」,列一些使用oop的常見原因。

此外,對於python2來說,還有乙個叫做「新式類」(new-style)的東西,這個對應於前面講過的類,那麼前面講過的類就稱為「經典」(classic)類。但是,對於python3來講,沒有這種區別,二者融合。只是在python2中,兩個是有區別的。在基礎部分,依然不講授新式類的問題,如果有興趣,可以自己在google中查詢有關資料,也可以隨著我部落格的深入,到下乙個階段來學習。

類的方法就是函式,只不過這個函式的表現有點跟前面學過的函式不一樣,比如有個self。當然,也不是必須要有的,下面就會看到沒有self的。既然方法和函式一樣,本質上都是函式,那麼,函式那部分學習的時候已經明確了:函式是物件,所以,類方法也是物件。正如剛才說的,類的方法中,有的可以有self,有的可以沒有。為了進行區別,進一步做了這樣的定義:

>>> class myclass:

... def foo(self,text):

... print text

...

可以用下面的方式呼叫例項方法

>>> a = myclass()       #建立類例項

>>> a.foo('hiekay.github.io') #呼叫例項方法

hiekay.github.io

>>> a.foo

>

在這個例項方法呼叫的時候,其實已經將例項名稱a傳給了self,這就是呼叫繫結例項方法物件,有self。

上面的呼叫過程,還可以這樣來實現:

>>> a = myclass()

>>> x = a.foo #把例項a和方法函式foo繫結在一起

>>> x

>

>>> x("hiekay.github.io")

hiekay.github.io

在上面的呼叫中,其實相當於前面的呼叫過程的分解動作。即先將例項a和方法函式foo繫結在一起,然後賦值給x,這時候x就相當於乙個簡單函式一樣,可以通過上述方式傳入引數。這裡將例項和方法函式繫結的方式就是運用點號運算(object.method_function)

所謂類方法物件,就是不通過例項,而是用類進行點號運算來獲得方法函式(classname.method_function)

>>> a = myclass()

>>> y = myclass.foo #這裡沒有用類呼叫

>>> y

這樣的呼叫,就得到了無繫結方法物件,但是,呼叫的時候必須傳入例項做為第一引數,如下

>>> y(a,"hiekay.github.io")

hiekay.github.io

否則,就報錯。請看官特別注意報錯資訊

>>> y("hiekay.github.io")

traceback (most recent call last):

file "", line 1, in typeerror: unbound method foo() must be called with myclass instance as first argument (got str instance instead)

>>>

在程式設計實踐中,似乎用例項方法呼叫更多一下。

在寫程式的時候,必須要寫必要的文字說明,沒別的原因,除非你的**寫的非常容易理解,特別是各種變數、函式和類等的命名任何人都能夠很容易理解,否則,文字說明是不可缺少的。

在函式、類或者檔案開頭的部分寫文件字串說明,一般採用三重引號。這樣寫的最大好處是能夠用help()函式看。

"""this is python lesson"""

def start_func(arg):

"""this is a function."""

pass

class myclass:

"""thi is my class."""

def my_method(self,arg):

"""this is my method."""

pass

這樣的文件是必須的。

當然,在程式設計中,有不少地方要用「#」符號來做注釋。一般用這個來注釋區域性。

String類的細節

一 tab和空格替換 封裝checkutil時,為了避免字串中間有空格,比如 zhang san 所以我用如下正則替換,str.replace 然後寫測試類,只能字母加數字 param str return public static boolean isalphabetandnum string ...

零基礎學python 類的細節

前面對類的有關內容已經描述不少了,其實話題遠遠沒有結束,不過對於初學者,掌握這些已經算是入門,在以後的實踐中,還需要進行體會和感悟。大家對oop有不同看法,所謂工程派和學院派看法不一致。從應用的角度看,工程派的觀點是值得推薦的,那就是 不用太在意內部是怎麼工作的,只要能夠解決眼下的問題即可。但是,對...

儲存類細節增益

在這章中,我們一直保持你的私人資料傳的美德。然而,你可能偶爾會發現的情況下,你會發現你的類和函式,需要非常密切的工作。例如,你可能有乙個類儲存資料,和乙個函式 或另一類 資料顯示在螢幕上。雖然類儲存和顯示的 已經分離更容易維護,顯示 確實是密切相關的儲存類的細節。因此,沒有太多的顯示 隱藏儲存類細節...