python類中包含類 徹底搞懂Python中的類

2021-10-12 11:14:32 字數 1694 閱讀 9978

python類的定義

python 中定義乙個類使用 class 關鍵字實現,其基本語法格式如下:class 類名:

多個(≥0)類屬性...

多個(≥0)類方法...

注意,無論是類屬性還是類方法,對於類來說,它們都不是必需的,可以有也可以沒有。另外,python 類中屬性和方法所在的位置是任

意的,即它們之間並沒有固定的前後次序。

和變數名一樣,類名本質上就是乙個識別符號,因此我們在給類起名字時,必須讓其符合 python 的語法。有讀者可能會問,用 a、b、c 作

為類的類名可以嗎?從 python 語法上講,是完全沒有問題的,但作為一名合格的程式設計師,我們必須還要考慮程式的可讀性。

因此,在給類起名字時,最好使用能代表該類功能的單詞,例如用「student」作為學生類的類名;甚至如果必要,可以使用多個單詞組

合而成,例如初學者定義的第乙個類的類名可以是「thefirstdemo」。

注意,如果由單詞構成類名,建議每個單詞的首字母大寫,其它字母小寫。

給類起好名字之後,其後要跟有冒號(:),表示告訴 python 直譯器,下面要開始設計類的內部功能了,也就是編寫類屬性和類方法。

其實,類屬性指的就是包含在類中的變數;而類方法指的是包含類中的函式。換句話說,類屬性和類方法其實分別是包含類中的變數和函

數的別稱。需要注意的一點是,同屬乙個類的所有類屬性和類方法,要保持統一的縮排格式,通常統一縮排 4 個空格。

通過上面的分析,可以得出這樣乙個結論,即 python 類是由類頭(class 類名)和類體(統一縮排的變數和函式)構成。例如,下面程

序定義乙個 thefirstdemo 類:class thefirstdemo:

'''這是乙個學習python定義的第乙個類'''

# 下面定義了乙個類屬性

add = ''

# 下面定義了乙個say方法

def say(self, content):

print(content)

和函式一樣,我們也可以為類定義說明文件,其要放到類頭之後,類體之前的位置,如上面程式中第二行的字串,就是 thefirstdemo

這個類的說明文件。

另外分析上面的**可以看到,我們建立了乙個名為 thefirstdemo 的類,其包含了乙個名為 add 的類屬性。注意,根據定義屬性位置

的不同,在各個類方法之外定義的變數稱為類屬性或類變數(如 add 屬性),而在類方法中定義的屬性稱為例項屬性(或例項變數),

它們的區別和用法可閱讀《python類變數和例項變數》一節。

同時,thefirstdemo 類中還包含乙個 say() 類方法,細心的讀者可能已經看到,該方法包含兩個引數,分別是 self 和 content。可以肯

定的是,content 引數就只是乙個普通引數,沒有特殊含義,但 self 比較特殊,並不是普通的引數,它的作用會在後續章節中詳細介紹。

更確切地說,say() 是乙個例項方法,除此之外,python 類中還可以定義類方法和靜態方法,這 3 種類方法的區別和具體用法,可閱讀

《python例項方法、靜態方法和類方法》。

事實上,我們完全可以建立乙個沒有任何類屬性和類方法的類,換句話說,python 允許建立空類,例如:class empty:

pass

可以看到,如果乙個類沒有任何類屬性和類方法,那麼可以直接用 pass 關鍵字作為類體即可。但在實際應用中,很少會建立空類,因為

空類沒有任何實際意義。

python裡的類 徹底搞懂Python中的類

python類的定義 python 中定義乙個類使用 class 關鍵字實現,其基本語法格式如下 class 類名 多個 0 類屬性.多個 0 類方法.注意,無論是類屬性還是類方法,對於類來說,它們都不是必需的,可以有也可以沒有。另外,python 類中屬性和方法所在的位置是任 意的,即它們之間並沒...

徹底搞懂Python元組

x 1 2,3 直接把元組賦值給乙個變數 type x 使用type 函式檢視變數型別 class tuple x 空元組 x tuple 空元組 tuple range 5 將其他迭代物件轉換為元組 0 1,2 3,4 x 0 元組支援使用下標訪問特定位置的元素 1 x 1 最後乙個元素,元組也支...

徹底搞懂Python字典

使用賦值運算子 將乙個字典賦值給乙個變數即可建立乙個字典變數。adict 也可以使用內建類dict以不同形式建立字典。x dict 空字典 type x 檢視物件型別 class dict x 空字典 keys a b c d values 1 2,3 4 dictionary dict zip k...