【python基礎】類-初識類

2023-06-20 18:00:46

1.物件導向思想

在認識類之前,我們需要理解物件導向思想和程式導向思想。

程式導向思想:要擁有一間房屋,程式導向像是自己來修蓋房屋,如果需要經過選址、購買材料、砌牆、裝修等步驟,程式導向程式設計,就相當於自己個人來負責這些事情,需要考慮屋子選在什麼地方修建,要哪些材料,怎麼砌牆,怎麼裝修等。每一步都需要自己來考慮,然後按照步驟一步一步實施。

物件導向思想:同樣擁有一間房屋,但是物件導向更符合現實,類似於專業的人做專業的思想,選址、購買材料、砌牆等步驟由開發商這個物件來完成,作為我們個人自己不需要去考慮這些步驟具體如何實施,對於裝修我們可以交給裝修公司這個物件來完成,我們個人自己也不需要去考慮具體步驟如何實施,我們個人要做的只是去選擇其中某個開發商修建的某套房屋即可,某個裝修公司的某個裝修方案即可。放在Python程式設計中,相當於開發商具有提供毛坯房的函數,裝修公司有裝修方案的函數,我們需要屋子的時候,直接可以去呼叫開發商的毛坯房函數、需要裝修就去呼叫裝修公司的裝修方案函數。

所以物件導向思想的程式設計方式,更符合現實世界鐘的事物和情景,程式導向的思想略顯複雜,需要考慮過程中的每一步

2.建立類

在物件導向程式設計中,編寫表示現實世界中的事物和情景,我們需要用到類,由類建立物件。類的話類似於上面例子中的開發商的共性資訊集合,物件的話類似於就是具體到某個開發商的具體資訊集合。使用物件導向程式設計可更加逼真的模擬現實情景。

使用類幾乎可以模擬任何東西。下面我們就編寫一個表示人的簡單類,類的話表示的不是特定的人,而是任何一個人,裡面編寫的都是人的共性資訊集合。

其語法格式:

我們新建一個people的.py檔案,並編寫程式如下所示:

通過上面的程式編寫我們發現有以下幾點:

1.有四個def關鍵字代表的函數,在類中的函數我們稱為類的方法,前面學到的有關函數的一切都適用於方法,我們定義了初始化方法__init__、吃飯方法eat、睡覺方法sleep、學習方法study,雖然只是輸出了一條語句,但是我們可以根據需求,繼續擴充套件,這裡只是舉下例子。

2.init方法,是類的初始化方法,這個一個特殊的方法,每當根據人的類去建立人的範例時,Python都會自動執行它。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是一種約定,旨在避免Python預設方法與普通方法發生名稱衝突。

3.__init__方法宣告時有兩個形參變數,self和name。其中self是必不可少的,還必須位於其他形參變數的前面。因為Python呼叫__init__方法來建立人的類所對應的人的範例時,將自動傳入實參self。所以我們在向People這個類的範例物件傳遞實參變數資料時,只需傳遞name,self會自動傳遞,我們不需要手動傳遞它

4.每個與類相關聯的方法呼叫都自動傳遞實參變數self,它是指向範例本身的參照,讓範例能夠存取類中的屬性和方法,屬性在這裡就相當於name。

5.self.name = name這條語句,以self為字首的變數都可供類中的所有方法使用,我們還可以通過類的任何範例來存取這些變數。這些變數叫做類的屬性

3.建立範例

範例是類的物件,可將類視為有關如何建立範例的說明。People類是範例人的一系列說明,讓Python知道如何建立表示特定人的範例。

其語法格式:

變數名 = 類名(實參變數1,實參變數2,,,,,實參變數n)

編寫程式如下所示:

我們看到輸出結果是一個People object說明這是一個People的物件

如果想輸出people這個範例的屬性資訊,可以在People類編寫一個__str__方法,這個其實是重寫父類別方法,後期會有所介紹。

編寫程式如下所示:

這裡需要注意的是方法__init__方法並未顯式地包含return語句,但Python自動返回一個表示人的範例,我們將這個範例儲存在變數people中。

4.存取類屬性

要存取範例的屬性,可使用句點表示法。

其語法格式:

範例變數名.類屬性名

編寫程式如下所示:

句點表示法在Python中很常用,這種語法演示了Python如何獲悉屬性的值。在這裡Python先找到範例people,再查詢與這個範例相關聯的屬性name,因為加self字首的變數,就是與範例相關聯的變數,這裡找的就是self.name,因為此時self.name的值為'張三',所以輸出結果即為'張三'

5.呼叫類方法

句點表示法不僅可以用來存取類屬性,也可用來存取類方法。

其語法格式:

範例變數名.類方法

編寫程式如下所示:

6.建立多個範例

我們建立多個人的範例,輸出他們的名字並且輸出他們正在幹什麼

編寫程式如下所示:

每個人都是獨立的一個範例,有自己的一組屬性,能夠執行相同的操作。我們可以根據一個類建立任意數量的範例。