前面章節(jié)中已經(jīng)提到,類僅僅充當(dāng)圖紙的作用,本身并不能直接拿來用,而只有根據(jù)圖紙?jiān)斐龅膶?shí)際物品(對(duì)象)才能直接使用。因此,Python程序中類的使用順序是這樣的: 1、創(chuàng)建(定義)類,也就是制作圖紙的過程; 2、創(chuàng)建類的實(shí)例對(duì)象(根據(jù)圖紙?jiān)斐鰧?shí)際的物品),通過實(shí)例對(duì)象實(shí)現(xiàn)特定的功能。 本節(jié)先教大家如何創(chuàng)建(定義)一個(gè)類,如何使用定義好的類將放到后續(xù)章節(jié)進(jìn)行講解。 Python類的定義Python中定義一個(gè)類使用class關(guān)鍵字實(shí)現(xiàn),其基本語(yǔ)法格式如下: class 類名: 多個(gè)(≥0)類屬性... 多個(gè)(≥0)類方法...123復(fù)制代碼類型:[python] 注意,無論是類屬性還是類方法,對(duì)于類來說,它們都不是必需的,可以有也可以沒有。另外,Python類中屬性和方法所在的位置是任意的,即它們之間并沒有固定的前后次序。 和變量名一樣,類名本質(zhì)上就是一個(gè)標(biāo)識(shí)符,因此我們?cè)诮o類起名字時(shí),必須讓其符合Python的語(yǔ)法。有讀者可能會(huì)問,用a、b、c作為類的類名可以嗎?從Python語(yǔ)法上講,是完全沒有問題的,但作為一名合格的程序員,我們必須還要考慮程序的可讀性。 因此,在給類起名字時(shí),最好使用能代表該類功能的單詞,例如用“Student”作為學(xué)生類的類名;甚至如果必要,可以使用多個(gè)單詞組合而成,例如初學(xué)者定義的第一個(gè)類的類名可以是“TheFirstDemo”。 注意,如果由單詞構(gòu)成類名,建議每個(gè)單詞的首字母大寫,其它字母小寫。 給類起好名字之后,其后要跟有冒號(hào)(:),表示告訴Python解釋器,下面要開始設(shè)計(jì)類的內(nèi)部功能了,也就是編寫類屬性和類方法。 其實(shí),類屬性指的就是包含在類中的變量;而類方法指的是包含類中的函數(shù)。換句話說,類屬性和類方法其實(shí)分別是包含類中的變量和函數(shù)的別稱。需要注意的一點(diǎn)是,同屬一個(gè)類的所有類屬性和類方法,要保持統(tǒng)一的縮進(jìn)格式,通常統(tǒng)一縮進(jìn)4個(gè)空格。 Python變量和函數(shù)的使用,前面章節(jié)中已經(jīng)做了詳細(xì)的介紹,這里不再重復(fù)贅述。 通過上面的分析,可以得出這樣一個(gè)結(jié)論,即Python類是由類頭(class類名)和類體(統(tǒng)一縮進(jìn)的變量和函數(shù))構(gòu)成。例如,下面程序定義一個(gè)TheFirstDemo類: class TheFirstDemo: '''這是一個(gè)學(xué)習(xí)Python定義的第一個(gè)類''' # 下面定義了一個(gè)類屬性 add = 'http://c.' # 下面定義了一個(gè)say方法 def say(self, content): print(content)1234567復(fù)制代碼類型:[python] 和函數(shù)一樣,我們也可以為類定義說明文檔,其要放到類頭之后,類體之前的位置,如上面程序中第二行的字符串,就是TheFirstDemo這個(gè)類的說明文檔。 另外分析上面的代碼可以看到,我們創(chuàng)建了一個(gè)名為TheFirstDemo的類,其包含了一個(gè)名為add的類屬性。注意,根據(jù)定義屬性位置的不同,在各個(gè)類方法之外定義的變量稱為類屬性或類變量(如add屬性),而在類方法中定義的屬性稱為實(shí)例屬性(或?qū)嵗兞浚?/p> 同時(shí),TheFirstDemo類中還包含一個(gè)say()類方法,細(xì)心的讀者可能已經(jīng)看到,該方法包含兩個(gè)參數(shù),分別是self和content??梢钥隙ǖ氖?,content參數(shù)就只是一個(gè)普通參數(shù),沒有特殊含義,但self比較特殊,并不是普通的參數(shù),它的作用會(huì)在后續(xù)章節(jié)中詳細(xì)介紹。 更確切地說,say()是一個(gè)實(shí)例方法,除此之外,Python類中還可以定義類方法和靜態(tài)方法,這3種類方法的區(qū)別和具體用法。 事實(shí)上,我們完全可以創(chuàng)建一個(gè)沒有任何類屬性和類方法的類,換句話說,Python允許創(chuàng)建空類,例如: class Empty: pass12復(fù)制代碼類型:[python] 可以看到,如果一個(gè)類沒有任何類屬性和類方法,那么可以直接用pass關(guān)鍵字作為類體即可。但在實(shí)際應(yīng)用中,很少會(huì)創(chuàng)建空類,因?yàn)榭疹悰]有任何實(shí)際意義。 |
|