Python程式設計基礎(9) 類(1)

2021-10-11 17:36:24 字數 2926 閱讀 6120

前言:物件導向程式設計是最有效的軟體編寫方法之一。在物件導向程式設計中,你編寫表示現實世界中的事物和情景的類,並基於這些類來建立物件。編寫類時,你定義一大類物件都有的通用行為。基於類建立物件時,每個物件都自動具備這種通用行為然後可根據需要賦予每個物件獨特的個性。使用物件導向程式設計可模擬現實情景,其逼真程度這裡需要注達到了令人驚訝的地步。根據類來建立物件稱為例項化,這讓你能夠使用類的例項。在本節中,筆者將編寫一些類並建立其實例。將指定可在例項中儲存什麼資訊,定義可對這些例項執行哪些操作。筆者還將編寫一些類來擴充套件既有類的功能,讓相似的類能夠高效地共享**。筆者將把自己編寫的類儲存在模組中,並在自己的程式檔案中匯入其他軟體工程師編寫的類。

9.1、建立和使用類

使用類幾乎可以模擬任何東西。下面筆者編寫乙個表示小狗的簡單類dog,它表示的不是特定的小狗,而是任何小狗。對於大多數寵物狗,我們都知道些什麼呢?它們都有名字和年齡。我們大多數小狗還會蹲下和打滾。由於大多數小狗都具備上述兩項資訊(名字和年齡)和兩還知道種行為(蹲下和打滾),我們的dog類將包含它們。這個類讓 python知道如何建立表示小狗的物件。編寫這個類後,我們將使用它來建立表示特定小狗的例項。

根據dog類建立的每個例項都將儲存名字和年齡,我們賦予了每條小蹲下(sit())和打滾(roll_over())的能力:

方法__init__()

類中的函式稱為方法。你在前面學到的有關函式的一切都適用於方法,就目前而言,唯一重要的差別是呼叫方法的方式。方法__init__()是乙個特殊方法,每當你根據dog類建立, python都會自動執行它。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是新例項時一種約定,旨在避免 python預設方法與普通方法發生名稱衝突。務必確保init()的兩邊都有兩個下劃線,否則當你使用類來建立例項時,將不會自動呼叫這個萬法,進而引發難以發現的錯誤我們將方法init_()定義成包含三個形參:slf、name和age。在這個方法的定義中,形參self必不可少,而且必須位於其他形參的前面。為何必須在方法定義中包含形參self呢?因為 python呼叫這個方法來建立dog例項時,將自動傳入實參self。每個與例項相關聯的方法呼叫都自動傳遞實參self,它是乙個指問例項本身的引用,讓例項能夠訪問類中的屬性和方法。建立dog例項時, python將呼叫dog類的方法init()我們將通過實參向dog()傳遞名字和年,self會自動傳遞,因此不需要傳遞它。每當根據dog類建立例項時,都只需給最後兩個形參齡name和age)提供值。其中定義的兩個變數都有字首self。以sel為字首的變數可供類中的所有方法使用,可以通過類的任何例項來訪問。self.name=name獲取與形參name相關聯的值,並將其賦給變數name然後該變數被關聯到當前建立的例項。self.ageage的作用與此類似。像這樣可通過例項訪問的變數稱為屬性。

dog類還定義了另外兩個方法:sit()和 roll_over()。這些方法執行時不需要額外的資訊,因此它們只有乙個形參self。我們隨後將建立的例項能夠訪問這些方法,換句話說,它們都會蹲下和打滾。當前,sit()和 roll_over()所做的有限,只是列印一條訊息,指出小狗正在下或打滾。但可以擴充套件這些方法以模擬實際情況:如果這個類包含在乙個計算機遊戲中,這些方法將包含建立小狗蹲下和打滾動畫效果的**;如果這個類是用於控制機器狗的,這些方法將讓機器狗做出蹲下和打滾的動作。

9.2、建立類的例項

(1)、下面筆者舉例乙個建立表示特定小狗的例項:

輸出:(2)、呼叫方法

根據dog類建立例項後,就能使用句點表示法來呼叫dog類中定義的任何方法了,下面來讓小狗蹲下和打滾:

輸出:(3)、建立多個例項

可按需求根據類建立任意數量的例項,下面建立乙個名為your_dog的小狗的例項:

輸出:

9.3、類和例項的修改

(1)、下面筆者編寫乙個關於汽車的類,即car類:

輸出:(2)、給屬性指定預設值

我們給上面的car類增加乙個里程表,用於讀取汽車里程資訊,設定其初始里程為66miles:

輸出:(3)、我們通過方法來修改屬性的值

如果我們通過形參方法來替你更新屬性,那麼會變得更加有趣,接下來筆者會通過形參和實參來進行屬性值的修改,並且增加警示功能,即當里程數值被人為修改時會發出警告,這裡我們定義當超過原有里程值時發出警告。

輸出:(4)、通過方法對屬性的值進行遞增

這裡我們演示屬性值遞增的量:

輸出:總結:本部分筆者演示了如何建立和使用類,接下來筆者會繼續介紹有關類的內容,下一步分我們將學習繼承、如何進行類建立工作以及python標準函式庫randint()的作用。

python基礎 day9 函式式程式設計1

def 函式名 引數列表 函式體return 返回值示例 加法計算器函式 def calculator first num,second num test first num second num return test print calculator 2,3 def calculator fir...

python基礎程式設計 9 素數的統計輸出

python素數的計算及輸出是這次程式設計練習題例項的核心內容。在做題之前,要先知道素數的概念,明白了素數究竟是什麼,對解題是很有幫助的。python素數計算及輸出練習題要求如下 簡述 區間範圍101 200 要求 判斷這個區間內有多少個素數,並逐一輸出。python解題思路分析 判斷這個數是否是素...

1 python程式設計基礎學習

5 變數 重點 6 常量 7 注釋 8 資料型別 為了完成某種特定功能,以某種程式語言編寫的有序指令的集合。程式是指揮cpu工作的 工作手冊 計算機只能執行二進位制 程式語言一般類似英文,想要讓計算機理解你寫的程式,必須把程式 翻譯 成計算機能理解的二進位制 根據翻譯形式的不同,可以分為 解釋 將程...