Python基礎 06 物件導向

2021-09-05 12:24:18 字數 2301 閱讀 2048

1. 類和物件

類是對一群具有相同特徵或者行為的事物的統稱,是抽象的不可以直接使用。

特徵被稱為屬性,行為被稱為方法

類是模板,物件是根據類這個模板建立出來的,應該先有類,再有物件

類名需要滿足大駝峰命名法

2. 物件導向基本語法

1). dir內建函式

內建函式dir中包含一些方法,個別方法作用如下:

__new__:建立物件時,會被自動呼叫(為物件開闢記憶體空間)

__init__:物件被初始化時,會被自動呼叫

__del__:物件被從記憶體銷毀前,會被自動呼叫

__str__:返回物件的描述資訊,print函式輸出使用

2). 定義簡單的類

class 類名:

def 方法1(self,引數列表)

pass

def 方法2(self,引數列表)

pass

方法的定義與函式的定義幾乎一樣,區別在於第乙個引數必須是self

建立物件:物件變數 = 類名()

3). 方法中的self引數

在python中,物件屬性的封裝應該封裝在類的內部,類的外部需要使用時,直接通過.設定乙個屬性即可。

由哪乙個物件呼叫的方法,方法內的self就是哪乙個物件的引用

在呼叫方法時,程式設計師不需要傳遞self引數

在方法內部可以通過self.訪問物件的屬性,也可以通過self.呼叫其他的物件方法

4). 初始化方法

__init__方法是專門用來定義乙個類具有哪些屬性的方法。

在__init__方法內部使用 self.屬性名 = 屬性的初始值 可以定義屬性

5). 內建方法

乙個物件呼叫 類名()建立,生命週期開始

乙個物件的__del__方法一旦被呼叫,生命週期結束

6). __str__方法:

預設情況下,使用print輸出物件變數,會輸出這個變數引用的物件是由哪乙個類建立的物件,以及在記憶體中的位址(十六進製制)

如果希望print輸出物件變數時,能夠列印自定義的內容,就可利用__srt__這個內建的方法。

注意:__str__方法必須返回乙個字串

7). 私有屬性和私有方法

在定義屬性和方法時,在屬性名或者方法名前增加兩個下劃線,定義的就是私有屬性的方法

私有屬性/方法就是物件不希望公開的屬性/方法

3. 物件導向

建立物件,讓物件呼叫方法

乙個物件屬性可以是另外乙個類建立的物件,所以乙個物件的屬性又可以呼叫另外乙個物件的方法。

is 和 == 區別:

is用於判斷 兩個變數引用物件是否為同乙個

== 用於判斷引用變數的值是否相等

針對none的比較,要使用記憶體比較符is

4. 繼承

子類擁有父類所有的屬性和方法

class 子類(父類):

pass

繼承具有傳遞性,c類既從a類繼承,又從b類繼承。那麼c類就擁有b類和a類所有的屬性和方法。

1).單繼承-方法的重寫

父類的方法不能滿足子類需求時,可以對方法進行重寫,有兩種方式:

覆蓋父類的方法

如果在開發中,父類的方法實現和子類的方法實現,完全不同就可以使用覆蓋的方法,在子類中重新編寫父類的方法實現

對父類方法進行擴充套件

在子類中重寫父類的方法,在需要的位置使用super().父類方法來呼叫父類方法的執行。

2). 多繼承

多繼承開發時,如果父類之間存在同名的屬性或者方法,應該盡量避免使用多繼承

python中可使用內建屬性__mro__來檢視方法搜尋順序,例如:print(c.__mro__)

5. 多型

python物件導向基礎 python物件導向基礎

面向過程與物件導向 面向過程的程式設計的核心是過程 流水線式思維 過程即解決問題的步驟,面向過程的設計就好比精心設計好的一條流水線,考慮周全什麼時候處理什麼東西。優點 極大降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊 即可。缺點 一套流水線或者流程就是解決乙個問題,牽一髮而動全身。應用場景 一...

Python之物件導向 物件導向基礎

一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...

python物件導向基礎

類是例項的模版,例項是根據類建立的乙個具體物件,每個物件都有相同的方法,但是各自的資料不同。如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線 在python中,例項的變數名如果以 開頭,就變成了乙個私有變數 private 只有內部可以訪問,外部不能訪問 當子類和父類都存在相同的run...