Python面向對象封裝的簡明例子——擺放傢俱

實例一:擺放傢俱
需求如下:

傢俱(HouseItem)有名字和佔地面,其中
席夢思(bed) 佔地 4 平米
衣櫃(chest) 佔地 2 平米
餐桌(table) 佔地 1.5 平米
打印出傢俱名稱呵佔地面積

分析:從以上需求我們可以看出 類是傢俱(HouseItem)
該類有兩個屬性:傢俱name和佔地面積area
可以通過__init__()方法設置屬性的初始值
可以通過__str__()方法打印需要的信息

所以分析結果見下表:
在這裏插入圖片描述
代碼如下:

class Houseitem:
      def __init__(self,name,aera):
          self.name = name 
          self.area = area
      def __str__(self):
          return "[%s]  佔地面積%.2f"  %(self.name,self.area)

bed = Houseitem("席夢思",4) #bed對象實例化,使這個對象具體化,具有兩個屬性,分別是name屬性叫席夢思,area屬性是4
print(bed) #打印bed這個對象,輸出—__str__()中傳入的內容
chest = Houseitem("衣櫃",2) #chest對象實例化,使這個對象具體化,具有兩個屬性,分別是name屬性叫衣櫃,area屬性是2
print(chest)#打印chest這個對象,輸出—__str__()中傳入的內容
table = Houseitem("table",1.5)#table對象實例化,使這個對象具體化,具有兩個屬性,分別是name屬性叫書桌,area屬性是1.5
print(table)#打印table這個對象,輸出—__str__()中傳入的內容
#輸出結果
#[席夢思]  佔地面積4.00
#[衣櫃]  佔地面積2.00
#[書桌]  佔地面積1.50

實例二:將傢俱添加到房子中
需求如下:
將實例一中生成的傢俱添加到房子中,
打印房子時,要求輸出:戶型、總面積、剩餘面積、傢俱名稱列表

分析:
傢俱已經通過上一個Houseitem()類已經實現
房子需要通過一個房子類生成
需要一個方法將傢俱添加到房子中
需要四個屬性來表示房子的戶型、總面積、剩餘面積、傢俱名稱列表
屬性 1. 房子的戶型,需要外部輸入實際參數,所以需要定義一個形參來給房子的戶型傳入值
屬性 2. 總面積,需要外部輸入實際參數,所以需要定義一個形參來給總面積傳入值
屬性 3. 剩餘面積,剩餘面積是通過計算得來,僅需要一個表示剩餘面積的屬性代表剩餘面積的值,無形參
屬性 4.傢俱名稱列表,傢俱名稱列表是通過調用方法來實現列表的添加,所以僅需要一個屬性來表示列表,無形參

str()方法打印出戶型、總面積、剩餘面積、傢俱名稱列表
init()方法輸入房子的戶型 和總面積
__add_item()方法來實現將傢俱添加到房子中

所以分析結果見下表:
在這裏插入圖片描述
代碼如下

calss House:
      def __init__(self,house_type,area):
         self.house_type = house_type
         self.area = area
         self.free_area = free_area  #定義一個剩餘面積屬性
         self.item_list = []  #空列表用來存放放入房子這個對象中的傢俱
     def __str__(self):
         return (" 房子戶型:%s \n 總面積: %.2f \n  剩餘面積:%.2f \n 傢俱名稱列表:%s \n" 
         %(self.house_type,self.area,
         self.free_area,self_item_list))
     def add_item(self,item):
         print("要添加%s",item)
         if item.area > self.area:
            print("%s面積太大,無法添加"%item.name)
         return
         self.item_list.append(item.name)
         self.free_area -=item.area

bed = Houseitem("席夢思",4)
print(bed)
#創建房子對象
my_home = House("兩室一廳"60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)


小結

創建了一個 房子類,使用到 init 和 str 兩個內置方法
準備了一個 add_item 方法 準備添加傢俱
使用 房子類 創建了 一個房子對象
讓 房子對象 調用了三次 add_item 方法,將 三件傢俱 以實參傳遞到 add_item 內部
本文參考鏈接
如有侵權,聯繫刪除

發佈了26 篇原創文章 · 獲贊 7 · 訪問量 1795
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章