封裝就是打包,封起來,裝起來
封裝資料:將資料隱藏起來這不是目的。隱藏起來然後對外提供操作該資料的介面,然後我們可以在介面附加上對該資料操作的限制,以此完成對資料屬性操作的嚴格控制。
封裝分為兩個層面第乙個層面:物件能拿到類的東西,但是類能拿到物件的東西嗎?
class foo():count = 0
print(count)
f = foo()
print(f.count) # 0
f.name = 'nick' # 對物件進行了封裝
print(foo.name)
第二個層面的:內部可以使用,外部不可以使用,在你需要封裝的屬性前面加上__
class people():__love_people = 'male'
# print('in',love_people)
def __nawan(self):
print('nawan')
def __nakuaizi(self):
print('nakuaizi')
def __chifan(self):
print('chifan')
def chifan_all(self):
self.__nawan()
self.__nakuaizi()
self.__chifan()
# print('out',people.__f1)
property一般用在:本來是方法,但是他應該是屬性的時候,我們就應該property
class people():def __init__(self,height,weight):
self.height = height
self.weight = weight
@property
def bmi(self):
return self.weight/(self.height**2)
peo = people(1.8,70)
print(peo.height)
# print(peo.bmi())
print(peo.bmi)
裝飾器用法(只在python3中使用)
class people():def __init__(self,height,weight):
self.height = height
self.weight = weight
@property # 獲取值的時候觸發,你不需要加括號使用,不能加引數
def bmi(self):
return self.weight/(self.height**2)
@bmi.setter # 在修改bmi的時候觸發,必須得加引數
def bmi(self, value):
print(f'你已經成功修改為')
@bmi.deleter # 在刪除bmi的時候觸發,不能加引數
def bmi(self):
print('delter')
peo = people(1.8,70)
print(peo.bmi)
print('*'*50)
peo.bmi = 50
print('*'*50)
del peo.bmi
class oldboystudent: # 類的定義階段,會執行**(牢記)# 1 / 0
school = 'oldboy'
def __init__(self, id, name, age=15): # (******) # aaa是例項化的物件,自動傳值 # self=stu1 # self=stu2
self.id = id # stu1.id = id
self.name = name # stu1.name = name
self.age = age # stu1.age = age
def choose_course(self): # 約定俗成為self
# 1 / 0
print(id(self))
print(self.school)
print(self.id)
self.id += 1
print(f' is choosing course')
stu1 = oldboystudent(222222, '朱瑞星') # 每次例項化物件的時候都會自動呼叫__init__方法(排在第一位的)
# oldboystudent.choose_course(1111) # self = 1111
print('*' * 50)
stu1.choose_course() # self = <__main__.oldboystudent object at 0x000001c5ec999860>
print(stu1.id)
# 針對類而言:choose_course裡的self就是傳的引數
# 針對物件而言:choose_course裡的self就是物件本身
stu2 = oldboystudent(666666, '孔悟空', 19) # 每次例項化物件的時候都會自動呼叫__init__方法(排在第一位的)
# stu2.choose_course()
print(stu2.id)
物件導向之封裝
定義 影藏事物的屬性和實現的細節,僅對外提供公共的訪問方式 封裝的好處 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 私有的...