1. 程式人生 > >python中的面向物件之類的設計和常用的內建方法

python中的面向物件之類的設計和常用的內建方法

一、面向物件和麵向過程的對比

1、面向物件 oop:object oriented programming 面向物件的基本概念

面向物件的程式設計核心是物件 我們之前學習的程式設計方式就是面向過程的 面向過程和麵向物件,是兩種不同的程式設計方式 對比面向過程的特點,可以更好的瞭解什麼是面向物件

面向物件:--誰來做? 相比較函式,面向物件是更大的封裝,根據職責在一個物件中封裝多個方法 1)在完成某一個需求前,首先確定職責--要做的事(方法) 2)根據職責確定不同的物件,在物件內部封裝不同的方法(多個) 3)最後完成程式碼,就是順序的讓不同的物件呼叫不同的方法 特點: 1)注重物件和職責,不同的物件承擔不同的職責 2)更加適合對複雜的需求變化,是專門應對複雜專案的開發,提供的固定套路 3)需要在面向過程的基礎上,再學習一些面向物件的語法

過程和函式(都是對一段功能的程式碼進行封裝) 過程:是早期的一個程式設計概念     過程類似於函式,只能執行,但是沒有返回值 函式:不僅能執行,還可以返回結果(return)

2、面向過程:---側重於怎麼做?

面向過程的程式設計的核心是過程 1)把完成某一個需求的 所有步驟 從頭到尾 逐步實現 2)根據開發要求,將某些功能獨立的程式碼封裝成一個又一個函式 3)最後完成的程式碼,就是順序的呼叫不同的函式 特點: 1)注重步驟與過程,不注重職責分工 2)如果需求複雜,程式碼會變得很複雜 3)開發複雜專案,沒有固定的套路,開發難度很大

二、類和物件

1、類和物件的概念

類:是對一群具有相同特徵或行為的事物的一個統稱,不能直接使用(比如:飛機制造圖紙不能飛上天) 特徵:屬性 行為:方法 物件:由類創建出來的一個具體的存在,可以直接使用(用圖紙製造出來的飛機可以飛上天)

在程式開發中:應該先有類 再有物件

2、類的設計

1)類名:這類事物的名字,滿足大駝峰命名法     大駝峰命名法         每一個單詞的首字母大寫         單詞與單詞只見沒有下劃線 2)屬性:這個類創建出的物件有什麼樣的特徵 3)方法:這個類創建出的物件有什麼樣的行為

當一個類定義完成後,要使用這個類來定義物件

語法格式:物件名 = 類名( 定義只包含方法的類 class 類名:     def 方法1(self):         pass     def 方法2(self):         pass

示例:

執行結果為:

self:哪一個物件呼叫的方法,self就是哪一個物件的引用

在類封裝的方法內部,self就表示當前呼叫方法的物件自己 呼叫方法時,程式設計師不需要傳遞self引數(但是定義的時候,第一個引數必須是self) 在方法內部:可以通過self.訪問物件的屬性 在方法內部:可以通過self.呼叫其他的物件方法

執行結果為:

3、初始化方法

初始化方法:__init__ 是python物件的內建方法 __init__方法是專門用來定義一個類具有哪些屬性和方法的

初始化方法 我們現在已經知道了使用 類名( )  就可以建立一個物件 當使用類名( )建立物件時,python的直譯器會自動執行以下操作:     1.為物件在記憶體中分配空間--建立物件     2.呼叫初始化方法為物件的屬性設定初始值--初始化方法(__init__) 這個初始化方法就是__init__方法,__init__是物件的內建方法 __init__方法是專門用來定義一個類具有哪些屬性的方法

執行結果為:

4、內建方法

1)__del__內建方法

在python中     當一個物件被從記憶體中銷燬前(把這個物件從記憶體中刪除掉),會自動呼叫__del__方法 應用場景 __del__如果希望在物件被銷燬前,再做一些事情,可以考慮一下__del__方法

del關鍵字,可以從記憶體中刪除一個物件,del關鍵字自己呼叫了__del__方法

2)__str__內建方法

__str__方法:返回物件的描述資訊 print 物件

_str__方法: 在python中,使用python輸出物件變數,預設情況下,會輸出這個變數引用的物件是由哪>一個類建立的物件,以及在記憶體中的地址(十六進位制表示) 如果在開發中,希望使用print輸出物件變數時,能夠列印自定義的內容,就可以利用__str__這個內建方法了

執行結果為:

3)生命週期的定義

生命週期 一個物件從呼叫類名()建立,宣告週期開始 一個物件的__del__方法一旦被呼叫,生命週期就結束 在物件的生命週期內,可以訪問物件的屬性,呼叫物件的方法