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...