python物件導向之 封裝

2022-09-02 16:24:14 字數 2431 閱讀 6885

1.先看隱藏。

在python中用兩個下劃線開頭的方式將屬性隱藏起來。

注意:這種只是語法的變形,在讀到有以__開的的函式時,會自動將名稱變成 」_類名__屬性」這種格式,所以在函式外部是無法通過 __屬性 找到這個屬性的。

class

foo:

__n=111111 #

將屬性隱藏起來 #在定義階段會變成 _foo__n

def__init__

(self,name):

self.

__name =name

def__f1(self): #

同理隱藏這個函式 #在定義階段會變成 _foo__f1

print('

這裡是f1')

deff2(self):

self.

__f1() #

在類內部是可以用__f1訪問到隱藏屬性的。 #在定義階段會變成 self._foo__f1

#f=foo('

yxwang

') #

例項化乙個物件。

#f.__n #在類的外部是無法通過__n的方法訪問到隱藏屬性的。

f.f2() #

會列印出「這裡是f1」,因為f2是類內部的方法,f2是可以調到隱藏屬性__f1的。

2.再來看封裝

(1)封裝資料屬性:

隱藏屬性不是目的,隱藏屬性是為了直接在內部提供乙個外部呼叫著使用的介面。這樣就可以通過這個介面對屬性實現控制。

例子:

class

people:

def__init__

(self,name,age):

self.

__name=name

self.

__age=age

def tell_info(self): #

定義乙個返回結果的格式。

print('

《名字:%s 年齡:%s>

' %(self.__name,self.__age

))

defset_info(self,x,y):

ifnot isinstance(x,str): #

加上判斷條件,判斷使用者輸入的是不是字串型別

raise typeerror('

%s must be str

' %x) #

定義返回的錯誤。

ifnot isinstance(y,int): #

判斷使用者輸入的第二個引數 是不是數字型別。

raise typeerror('

%s must be int

' %y)

self.

__name=x

self.

__age=y

p=people('

egon

',18)

p.tell_info()

#獲取一下格式化的資料

#p.set_info('egon','19') #當第二個引數為字串的時候會報錯。 因為不匹配第二個引數為數字的條件

p.set_info('

egon

',19)

p.tell_info()

#再次獲取一下返回結果

(2)封裝函式屬性。

是為了降低複雜度,同時也提高了安全性。

比如,使用者取款,取款在程式中有 插卡 密碼認證  取款金額判斷,等等一些負責的功能。

但是對於使用者來說只需要知道取款就可以了。其餘的負責功能就可以隱藏起來了。

例子:

class

atm:

def__card

(self):

print('插卡'

)

def__auth

(self):

print('

使用者認證')

def__input

(self):

print('

輸入取款金額')

def__print_bill

(self):

print('

列印賬單')

def__take_money

(self):

print('取款'

)

def withdraw(self): #

在類內部定義乙個介面,在內部呼叫上班的這些功能。使用者使用的時候只提供這個介面就可以。

self.__card

() self.

__auth

() self.

__input

() self.

__print_bill

() self.

__take_money

()a=atm()

a.withdraw()

python物件導向之封裝

在python中用雙下劃線開頭的方式將屬性隱藏起來 設定成私有的 其實這僅僅這是一種變形操作且僅僅只在類定義階段發生變形 類中所有雙下劃線開頭的名稱如 x都會在類定義時自動變形成 類名 x的形式 classa n 0 類的資料屬性就應該是共享的,但是語法上是可以把類的資料屬性設定成私有的如 n,會變...

python物件導向之封裝

封裝 1.封裝是物件導向程式設計的一大特點 2.物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 3.外界使用類建立物件,然後讓物件呼叫方法 4.物件方法的細節都被封裝在類的內部 需求 1 1.小明體重75.0公斤 2.小明每次跑步都會 0.5公斤 3.小明每次吃東西體重都會增加1公斤 需...

python物件導向(二)之封裝

在程式設計中,封裝 encapsulation 是對具體物件的一種抽象,即將某些部分隱藏起來,在程式外部看不到,其含義是其他程式無法呼叫。即 封裝 就是將抽象得到的資料和行為 或功能 相結合,形成乙個有機的整體 即類 封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是要通過外...