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/2471/viewspace-2834577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python程式碼怎麼封裝Python封裝
- python怎麼封裝函式Python封裝函式
- Python_16 配置檔案與封裝Python封裝
- vue中axios的使用與封裝VueiOS封裝
- 怎樣安裝python的GPIO模組Python
- Python與C++引用分析PythonC++
- python中怎樣執行指令碼Python指令碼
- 怎樣在Python中執行cmdPython
- pt-ost python封裝Python封裝
- Python 的 Geth 封裝庫 PyGethPython封裝
- Python封裝(01):SSHClient.pyPython封裝client
- Python 封裝日誌模型loggingPython封裝模型
- Java中的引用與ThreadLocalJavathread
- 怎樣卸掉pythonPython
- AD怎麼生成封裝庫封裝
- 封裝Detours用於Python中x64函式hook封裝Python函式Hook
- python中怎樣指定open編碼為ansiPython
- vue-cli中怎麼基於axios去封裝方法VueiOS封裝
- 封裝redux中的createStore封裝Redux
- 十五、類與封裝的概念封裝
- RecyclerView使用封裝與優化View封裝優化
- laravel Es的封裝與使用Laravel封裝
- Selenium二次封裝-Python版本封裝Python
- 強引用、軟引用、弱引用與虛引用
- 怎樣進行有效微信域名防封
- 詳解vue中Axios的封裝與API介面的管理VueiOS封裝API
- python怎樣嵌入cPython
- 怎樣學好pythonPython
- 怎樣安裝jupyter?
- Python裡的引用與拷貝規律Python
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(三)封裝
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(二)封裝
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(一)封裝
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(六)封裝
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(五)封裝
- 怎樣封裝一個好故事?簡單的TRPG模組寫作指南(四)封裝
- 怎樣解除安裝Chromebook 中的應用程式Chrome
- 【JavaScript框架封裝】實現一個類似於JQuery的CSS樣式框架的封裝JavaScript框架封裝jQueryCSS