物件導向之封裝

2022-09-17 12:12:12 字數 1728 閱讀 7133

裝:往容器/命名空間裡存放入名字

封:將存放於命名空間中的名字給隱藏起來,這種隱藏對外不對內

封裝資料屬性

class

teacher:

def__init__

(self,name,age):

#self.__name=name

#self.__age=age

self.set_info(name,age)

deftell_info(self):

print('

姓名:%s,年齡:%s

' %(self.__name,self.__age

))

defset_info(self,name,age):

ifnot

isinstance(name,str):

raise typeerror('

姓名必須是字串型別')

ifnot

isinstance(age,int):

raise typeerror('

年齡必須是整型')

self.

__name=name

self.

__age=age

t=teacher('

egon

',18)

t.tell_info()

t.set_info(

'egon

',19)

t.tell_info()

封裝函式屬性(封裝方法)

#

取款是功能,而這個功能有很多功能組成:插卡、密碼認證、輸入金額、列印賬單、取錢

#對使用者來說,只需要知道取款這個功能即可,其餘功能我們都可以隱藏起來,很明顯這麼做

#隔離了複雜度,同時也提公升了安全性

class

atm:

def__card

(self):

print('插卡'

)

def__auth

(self):

print('

使用者認證')

def__input

(self):

print('

輸入取款金額')

def__print_bill

(self):

print('

列印賬單')

def__take_money

(self):

print('取款'

)

defwithdraw(self):

self.

__card

() self.

__auth

() self.

__input

() self.

__print_bill

() self.

__take_money

()a=atm()

a.withdraw()

view code

在類內定義的屬性前加__開頭()

總結:1. __開頭的屬性實現的隱藏僅僅只是一種語法意義上的變形,並不會真的限制類外部的訪問

2. 該變形操作只在類定義階段檢測語法時發生一次,類定義階段之後新增的__開頭的屬性並不會變形

3. 如果父類不想讓子類覆蓋自己的屬性,可以在屬性前加__開頭

物件導向之封裝

定義 影藏事物的屬性和實現的細節,僅對外提供公共的訪問方式 封裝的好處 1.隱藏了事物的細節 2.提高了 的復用性 3.提高了安全性 封裝的實現 使用private關鍵字進行修飾,被private修飾的成員只能在本類中使用 setter和getter 封裝需要搭配set和get方法 set 設定器 ...

物件導向之封裝

封裝之如何隱藏屬性 在變數名和方法名之前加雙下劃線 外部就訪問不到 classa x 1def init self,name self.name name def bar self print self.name a.x 外部無法訪問這其實是在類定義的時候,將變數名和函式名進行了變形,我們可以列印類...

物件導向之 封裝

封裝 就是把屬性或者方法裝起來 廣義 把屬性和方法裝起來,外面不能直接呼叫了,要通過類的名字來呼叫 狹義 把屬性和方法藏起來,外面不能呼叫,只能在內部偷偷呼叫 class user def init self,name,passwd self.usr name self.pwd passwd 私有的...