python怎麼封裝函式
什麼是封裝
在程式設計中,封裝(Encapsulation)是對具體物件的一種抽象,即將某些部分隱藏起來,在程式外部看不到,其含義是其他程式無法呼叫。
要了解封裝,離不開“私有化”,就是將類或者是函式中的某些屬性限制在某個區域之內,外部無法呼叫。
python學習網,大量的免費,歡迎線上學習!
為什麼要封裝
封裝資料的主要原因是:保護隱私(把不想別人知道的東西封裝起來)
封裝方法的主要原因是:隔離複雜度(比如:電視機,我們看見的就是一個黑匣子,其實裡面有很多電器元件,對於使用者來說,我們不需要清楚裡面都有些元件,電視機把那些電器元件封裝在黑匣子裡,提供給使用者的只是幾個按鈕介面,透過按鈕就能實現對電視機的操作。)
提示:在程式語言裡,對外提供的介面(介面可理解為了一個入口),就是函式,稱為介面函式,這與介面的概念還不一樣,介面代表一組介面函式的集合體。
封裝分為兩個層面
封裝其實分為兩個層面,但無論哪種層面的封裝,都要對外界提供好訪問你內部隱藏內容的介面(介面可以理解為入口,有了這個入口,使用者無需且不能夠直接訪問到內部隱藏的細節,只能走介面,並且我們可以在介面的實現上附加更多的處理邏輯,從而嚴格控制使用者的訪問)
第一個層面的封裝(什麼都不用做):建立類和物件會分別建立二者的名稱空間,我們只能用類名.或者obj.的方式去訪問裡面的名字,這本身就是一種封裝。
print(m1.brand) #例項化物件(m1.) print(motor_vehicle.tag) #類名(motor_vehicle.) -------------輸出結果-------------- 春風 fuel oil
注意:對於這一層面的封裝(隱藏),類名.和例項名.就是訪問隱藏屬性的介面
第二個層面的封裝:類中把某些屬性和方法隱藏起來(或者說定義成私有的),只在類的內部使用、外部無法訪問,或者留下少量介面(函式)供外部訪問。
Python中私有化的方法也比較簡單,即在準備私有化的屬性(包括方法、資料)名字前面加兩個下劃線即可。
類中所有雙下劃線開頭的名稱如_x都會自動變形成:類名__x的形式:
class A: __N=0 #類的資料屬性就應該是共享的,但是語法上是可以把類的資料屬性設定成私有的如__N,會變形為_A__N def __init__(self): self.__X=10 #變形為self._A__X def __foo(self): #變形為_A__foo print('from A') def bar(self): self.__foo() #只有在類內部才可以透過__foo的形式訪問到.
這種自動變形的特點:
1、類中定義的__x只能在內部使用,如self.__x,引用的就是變形的結果。
2、這種變形其實正是針對外部的變形,在外部是無法透過__x這個名字訪問到的。
3、在子類定義的_x不會覆蓋在父類定義的__x,因為子類中變形成了:子類名_x,而父類中變形成了:父類名__x,即雙下滑線開頭的屬性在繼承給子類時,子類是無法覆蓋的。
更多學習內容,請點選。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2768/viewspace-2836038/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python程式碼怎麼封裝Python封裝
- JSONP 通用函式封裝JSON函式封裝
- 前端常用函式封裝前端函式封裝
- 【封裝小技巧】列表處理函式的封裝封裝函式
- 原生JS 一定要學會自己封裝函式,不然還怎麼‘原生’?JS封裝函式
- 封裝Detours用於Python中x64函式hook封裝Python函式Hook
- 【封裝小技巧】數字處理函式的封裝封裝函式
- Python中randrange()函式怎麼用?Python函式
- python的upper函式怎麼用Python函式
- 封裝帶引數的函式封裝函式
- python中的find函式怎麼用Python函式
- 那些年我封裝的 JS 函式封裝JS函式
- python函式超時怎麼自動退出?Python函式
- python的input函式出錯怎麼辦Python函式
- Python中open函式怎麼操作檔案Python函式
- js封裝 Ajax ——常用工具函式JS封裝函式
- 函式: 函式是怎麼使用的?函式
- python中怎樣封裝與引用Python封裝
- AD怎麼生成封裝庫封裝
- python的print函式不要換行怎麼寫Python函式
- 關於緩動動畫函式的封裝動畫函式封裝
- 關於Vue中常用的工具函式封裝Vue函式封裝
- [記錄] 通用封裝函式——四則運算封裝函式
- 封裝一個簡單的動畫函式封裝動畫函式
- javascript封裝動畫函式(勻速、變速)JavaScript封裝動畫函式
- JavaScript - 獲取字串位元組數(函式封裝)JavaScript字串函式封裝
- Python之函式裝飾器Python函式
- 什麼是Python函式?如何定義函式?Python函式
- python函式程式設計 返回函式 匿名函式 裝飾器 偏函式Python函式程式設計
- MKL稀疏矩陣運算示例及函式封裝矩陣函式封裝
- WebAPIs-06:動畫函式封裝 + 觸屏事件WebAPI動畫函式封裝事件
- python介面自動化(三十四)-封裝與呼叫--函式和引數化(詳解)Python封裝函式
- python3中reload()函式報錯怎麼解決Python函式
- python mmap()函式是什麼?Python函式
- javascript原生封裝一個淡入淡出效果的函式JavaScript封裝函式
- js封裝函式來 解釋jQuery的執行原理JS封裝函式jQuery
- 封裝一個元件 + 函式惰性思想(重寫應用)封裝元件函式
- 前端簡潔並實用的工具類函式封裝前端函式封裝