Python高階 類之封裝

2022-08-26 04:48:08 字數 773 閱讀 5941

封裝

第乙個層面的封裝:類就是麻袋,這本身就是一種封裝第二個層面的封裝:類中定義私有的,只有在類的內部使用,外部無法訪問

第三個層面的封裝:明確區分內外,內部的實現邏輯,外部無法知曉,並且為封裝到內部的邏輯提供了乙個訪問介面給

外部使用

封裝的本質是為了明確的區分內外部。

python約定:

約定一:任何以單下劃線開頭的名字都應該是內部的,私有的

約定二:雙下劃線開頭的名字

其實這僅僅這是一種變形操作且僅僅只在類定義階段發生變形

類中所有雙下劃線開頭的名稱如__x都會在類定義時自動變形成:_類名__x的形式:

class

a: _m = 1 #

這樣定義外部仍可以直接訪問到

__n=0 #

類的資料屬性就應該是共享的,但是語法上是可以把類的資料屬性設定成私有的如__n,會變形為_a__n

def__init__

(self):

self.

__x=10 #

變形為self._a__x

def__foo(self): #

變形為_a__foo

print('

from a')

defbar(self):

self.

__foo() #

只有在類內部才可以通過__foo的形式訪問到.

#a._a__n是可以訪問到的,

#這種,在外部是無法通過__x這個名字訪問到。

Python高階 封裝

繼承 封裝 多型 封裝對外部隱藏資訊,不能隨意訪問 修改物件的資料 方法 通過限制類的屬性和方法的訪問方式,實現 封裝 封裝的三個層次 類的封裝 外部可以任意訪問 修改類中的屬性和方法 私有屬性 外部不可以訪問 修改類的屬性或方法 公有方法 私有屬性 外部有條件限制的訪問 修改屬性,呼叫方法 封裝的...

函式高階 封裝 類

函式高階 函式的預設引數 如果某一函式需要引數,在函式的宣告或實現時,可以在括號中設定預設引數,如 void li1 int a 10 intli2 int a 10,int b 20 如果有預設引數,則呼叫函式時,如果沒有輸入相應引數,則使用預設引數 int li2 15 則函式中a 15,b 2...

Python高階之 元類

幾個魔術方法 new init call new 物件的建立,是乙個靜態方法,第乙個引數是cls 想想也是,不可能是self,物件還沒建立,哪來的self init 物件的初始化,是乙個例項方法,第乙個引數是self call 物件可call,注意不是類,是物件。class bar object d...