python物件導向三大特性之封裝

2021-10-08 02:11:48 字數 2415 閱讀 3395

封裝:類裡面不光有屬性還有方法。這種將屬性通過方法直接在類內部操作的形式就叫做封裝。

把很多資料封裝到⼀個物件中,把固定功能的**封裝到⼀個**塊, 函式, 物件, 打包成模組. 這都屬於封裝的思想. 封裝操作可以對受保護的成員進行功能開放的控制, 達到保護資料不被非法訪問的目的。

當然,方法也可以私有封裝, 但是一般都用不到。

在使用物件導向的封裝特性時,需要:

1.將內容封裝到某處

2.從某處呼叫被封裝的內容

1.將內容封裝到某處

self 是乙個形式引數,當執行 obj1 = 類名(實參1,實參2,…)時,self 等於 obj1

所以,內容其實被封裝到了物件 obj1 中。

2.從某處呼叫被封裝的內容呼叫被封裝的內容時,有兩種情況:

1、通過物件直接呼叫被封裝的內容:

根據儲存格式可以如此呼叫被封裝的內容:物件.屬性名

程式示例:

class

man:

def__init__

(self)

: self.gender =

"男" self.name =

none

defrun

(self,num1)

:# 成員方法

print

("跑了%s千公尺"

% num1)

defsing

(self,num2)

:print

("唱了%s首歌"

% num2)

obj1 = man(

)print

(obj1.gender)

# 呼叫obj1的gender 屬性

obj1.run(2)

# 呼叫obj1的成員方法

2、通過self間接呼叫被封裝的內容:

執行類中的方法時,需要通過self間接呼叫被封裝的內容

程式示例:

class

man:

def__init__

(self, name, age)

: self.name = name

self.age = age

defdetail

(self)

:print

(self.name)

print

(self.age)

obj1 = man(

'張三',11

)obj1.detail(

)# python缺省會將obj1傳給self引數,即:obj1.detail(obj1),

# 所以,此時方法內部的 self = obj1

程式執行結果:

對成員變數進行私有設定:

self.__變數名 = 值
提供對外訪問器:

訪問器(get方法)

: def get_變數名(self)

:return self.

__變數名

修改器(set方法)

: def set_變數名(self,形參)

: self.

__變數名 = 形參

程式例項:

class

man:

def__init__

(self)

: self.__id_card =

none

# __ 私有 ,定義為私有屬性 雙下劃線

self.name =

none

defget_id_card

(self)

:# 用來得到 獲取私有變數的方法

return self.__id_card

defset_id_card

(self,id_card)

:# 用來設定 賦值 給私有變數的方法

self.__id_card = id_card

man1 = man(

)man1.set_id_card(

"1112265656"

)print

(man1.get_id_card(

))

綜上所述,對於物件導向的封裝來說,其實就是使用構造方法將內容封裝到 物件 中,然後通過物件直接或者self間接獲取被封裝的內容。

python物件導向三大特性之封裝

封裝是物件導向三大特性最核心的乙個特性 封裝 整合 1 如何隱藏 在屬性名前加 字首,就會實現乙個對外隱藏屬性效果 該隱藏需要注意的問題 i 在類外部無法直接訪問雙下滑線開頭的屬性,但知道了類名和屬性名就可以拼出名字 類名 屬性,然後就可以訪問了,如foo.a n,所以說這種操作並沒有嚴格意義上地限...

Python物件導向三大特性之封裝

面向函式的程式設計和物件導向程式設計對比 通過函式和物件的方法實現同樣的功能,看起來是面向函式的程式設計比較簡單 假如是連線資料庫的增,刪,改,查操作使用物件導向的方法 更加簡單 vim day7 3.py usr bin python coding utf 8 def fetch 連線資料庫,ho...

python物件導向三大特性

定義 封裝一些資料和方法,只給外界提供必要的功能,掩蓋細節,提高 復用性和系統安全性。資料角度 用乙個類包裝多個變數,還可以定義方法,運算元據 行為角度 不同程式設計師開發乙個專案的不同功能,在使用時,直接呼叫,不需要思考其內部實現 設計角度 1 分而治之 拿到需求之後,分析需求,將需求拆解為不同的...