封裝
:類裡面不光有屬性還有方法。這種將屬性通過方法直接在類內部操作的形式就叫做封裝。
把很多資料封裝到⼀個物件中,把固定功能的**封裝到⼀個**塊, 函式, 物件, 打包成模組. 這都屬於封裝的思想. 封裝操作可以對受保護的成員進行功能開放的控制, 達到保護資料不被非法訪問的目的。
當然,方法也可以私有封裝, 但是一般都用不到。
在使用物件導向的封裝特性時,需要:
1.將內容封裝到某處1.將內容封裝到某處2.從某處呼叫被封裝的內容
self 是乙個形式引數,當執行 obj1 = 類名(實參1,實參2,…)時,self 等於 obj12.從某處呼叫被封裝的內容呼叫被封裝的內容時,有兩種情況:所以,內容其實被封裝到了物件 obj1 中。
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 分而治之 拿到需求之後,分析需求,將需求拆解為不同的...