python怎麼封裝函式

Bacer發表於2021-09-11

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章