python -封裝
阿新 • • 發佈:2019-01-03
封裝
1.封裝是面向物件程式設計的一大特點
2.面向物件程式設計的第一步 將屬性和方法封裝到一個抽象的類中(為什麼說是抽象的,因為類不能直接使用)
3.外界使用類建立物件,然後讓物件呼叫方法
4.物件方法的細節都被封裝在類的內部
需求1:
1.小明和小美都愛跑步
2.小美體重45.0公斤
3.小明體重75.0公斤
4.每次跑步都會減少0.5公斤
5.每次吃東西都會增加1公斤
class Person: def __init__(self,name,weight): self.name = name self.weight = weight def __str__(self): return ('我的名字叫 %s 體重是 %.2f' %(self.name,self.weight)) # 在物件方法內部,可以直接訪問物件的屬性 def run(self): print('%s 愛跑步' %(self.name)) self.weight -= 0.5 def eat(self): print('%s 吃東西' %(self.name)) self.weight += 1 xiaoming = Person('小明',75.0) xiaoming.run() xiaoming.eat() #print(xiaoming.weight) print(xiaoming) # 同一個類創建出多個物件之間,屬性互補干擾的 xiaomei = Person('小美',45.0) xiaomei.run() xiaomei.eat() print(xiaomei) print(xiaoming)
需求2:擺放傢俱
需求:
1.房子有戶型,總面積和傢俱名稱列表
新房子沒有任何的傢俱
2.傢俱有名字和戰地面積,其中
床:佔4平米
衣櫃:佔2平面
餐桌:佔1.5平米
3.將以上三件傢俱新增到房子中
4.列印房子時,要求輸出:戶型,總面積,剩餘面積,傢俱名稱列表
分為兩類:傢俱類、房子類
房子類要使用傢俱,所以被使用的類應先開發
class HouseItem: # 初始化方法 def __init__(self,name,area): self.name = name self.area = area def __str__(self): return '%s 佔地:%.2f' %(self.name,self.area) # 類和類之間規定空兩行 class House: def __init__(self,house_type,area): self.house_type = house_type self.area = area self.free_area = area # 剩餘面積初始值為總面積 self.item_list = [] # 傢俱列表一開始為空 def __str__(self): return ('戶型:%s 總面積:%.2f 剩餘面積:%.2f 傢俱列表:%s' %(self.house_type,self.area,self.free_area,self.item_list)) def add_item(self,item): # item 就是傢俱 # 1.判斷傢俱的面積 if item.area> self.free_area: print('傢俱面積太大了') return # 想要if直接結束程式 用return # 2.將傢俱名稱新增到列表中 self.item_list.append(item.name) # 3. 計算剩餘面積 self.free_area -= item.area bed = HouseItem('bed',4) # print(bed) chest = HouseItem('chest',2) table = HouseItem('table',1.5) a = House('三室兩廳',123) a.add_item(bed) a.add_item(chest) a.add_item(table) print(a)