裝:往容器/命名空間裡存放入名字
封:將存放於命名空間中的名字給隱藏起來,這種隱藏對外不對內
封裝資料屬性
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()
#view code取款是功能,而這個功能有很多功能組成:插卡、密碼認證、輸入金額、列印賬單、取錢
#對使用者來說,只需要知道取款這個功能即可,其餘功能我們都可以隱藏起來,很明顯這麼做
#隔離了複雜度,同時也提公升了安全性
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()
在類內定義的屬性前加__開頭()
總結: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 私有的...