物件導向深入

2021-10-07 04:46:20 字數 3052 閱讀 7096

獲取類/物件的所屬成員 類/物件.dict

res = demo.dict# 獲取當前類的所屬成員

res = obj.dict# 獲取當前物件的所屬成員

獲取類的文件資訊 類/物件.doc

res = demo.doc

res = obj.doc

獲取類名稱組成的字串

res = demo.name

獲取類所在的檔名稱,如果是當前檔案,顯示為__main__

res = demo.module

bases獲取當前類的父類列表

res = demo.base獲取繼承的第乙個父類

res = demo.bases獲取繼承的所有的父類列表

獲取當前類的繼承鏈

res = demo.mro

物件方法

特徵:1. 在類中定義的方法,含有self引數

2. 含有self的方法,只能使用物件進行呼叫

3. 該方法會把呼叫的物件傳遞進來

類方法特徵:

1.在類中定義的方法,使用裝飾器 @classmethod 進行了裝飾

2.方法中有cls這個行參。不需要例項化物件,直接使用類進行呼叫

3.會把呼叫這個方法的類傳遞進來

繫結類方法

特徵:在類中定義的方法只能使用類進行呼叫

靜態方法

特徵:在類中定義的方法,使用了 裝飾器 @staticmethod 進行了裝飾,可以使用物件或者類進行呼叫

檢測類和物件相關

issubclass(子類,父類) # 檢測乙個類是否為另乙個類的子類

res = issubclass(d,b)

isinstance(物件,類) # 檢測乙個物件是否是該類或該類的子類的例項化結果

res = isinstance(d,a)

操作類和物件成員相關

hasattr(物件/類,『成員名稱』) 檢測類/物件是否包含指定名稱的成員

res = hasattr(d,『name』)

getattr(物件/類,『成員名稱』) # 獲取類/物件的成員的值

res = getattr(d,『say』)

setattr(物件/類,『成員名稱』,『成員的值』) 設定類/物件的成員的屬性值

res = setattr(d,『name』,『ooo』)

print(d.name)

delattr(類/物件,『成員名稱』) 刪除類/物件的成員屬性 和 del 直接刪除物件的成員是一樣的結果

delattr(d,『name』)

dir() #獲取當前物件所以可以訪問的成員的列表

res = dir(d)

init初始化方法

觸發機制:當例項化物件之後就會立即觸發的方法

作用: 為當前建立的物件完成一些初始化的操作,比如:成員屬性的賦值,方法的呼叫,開啟或建立一些資源。

new構造方法

觸發機制:例項化物件時自動觸發(在__init__之前觸發)

作用: 管理控制物件建立的過程

del析構方法

觸發機制:當該類物件被銷毀時,自動觸發

作用: 關閉或釋放物件建立時開啟或建立的一些資源

call

觸發機制: 把物件當作函式直接呼叫時自動觸發

作用: 一般用於歸納類或物件的操作步驟,方便呼叫

當乙個類中,包含了三個魔術方法(get,set,delete)之一,或者全部時,那麼這個類就稱為描述符類

作用:描述符的作用就是對乙個類中的某個成員進行乙個詳細的管理操作(獲取,賦值,刪除)

描述符就是**了乙個類中的成員的操作,描述符屬於類,只能定義為類的屬性

get(self, instance, owner)

觸發機制:在訪問物件成員屬性時自動觸發(當該成員已經交給描述符管理時)

作用:設定當前屬性獲取的值

引數:1. self 描述符物件 2.被管理成員的類的物件。3.被管理成員的類

返回值:返回值作為成員屬性獲取的值

set(self, instance, value)

觸發機制:在設定物件成員屬性時自動觸發(當該成員已經交給描述符管理時)

作用:對成員的賦值進行管理

引數:1. self 描述符物件 2.被管理成員的類的物件。3.要設定的值

返回值:無

delete(self, instance)

觸發機制:在刪除物件成員屬性時自動觸發(當該成員已經交給描述符管理時)

作用:對成員屬性的刪除進行管理

引數:1. self 描述符物件 2.被管理成員的類的物件。

設計模式是前人為完成某個功能或需求,根據經驗和總結,對實現的**步驟和**設計進行了總結和歸納,成為了實現某個需求的經典模式。

設計模式並不是固定的**格式,而是一種物件導向程式設計的設計。

單例(單態)設計模式:

在當前指令碼中,同乙個類只能建立出乙個物件去使用。這種情況就成為單例(單態)。

mixin 混合設計模式:

在不改變原有函式**,且保持原函式呼叫方法不變的情況下,給原函式增加新的功能(或者給類增加屬性和方法)

核心思想:用乙個函式(或者類)去裝飾乙個舊函式(或者類),造出乙個新函式(或者新類)

應用場景:引入日誌,函式執行時間的統計,執行函式前的準備工作,執行函式後的處理工作,許可權校驗,快取等

語法規則:在原有的函式上加上 @符,裝飾器會把下面的函式當作引數傳遞到裝飾器中,@符又被成為 語法糖

Java物件導向深入篇

1 成員變數和區域性變數的區別 本篇學習王偉和傳智劉意 1.1 在類中的位置不同 成員變數 類中方法外 區域性變數 方法定義中或者方法宣告上 1.2 在記憶體中的位置不同 成員變數 在堆中 區域性變數 在棧中 1.3 生命週期不同 成員變數 隨著物件的建立而存在,隨著物件的消失而消失 區域性變數 隨...

php物件導向深入理解(二)

乙個簡單的小程式 配置 config.ini 專案的根目錄 define root f 資料夾的名字 oop 資料庫連線資訊 define db host localhost define db username root define db password root define db name...

深入理解C 物件導向之繼承

繼承是在類之間建立一種相交的關係,使得新定義的派生類的例項可以繼承已有的基類的特徵並且還可以新增新的功能。繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的資料或新的功能,也可以用已存在的類的功能。為了提高軟體模組的可復用性和可擴充性,以便提高軟體的開發效率,我們總是希望能夠利...