天天看點

面向對象案例講解 | 手把手教你入門Python之五十六

上一篇: 函數案例講解 | 手把手教你入門Python之五十五 下一篇: Python的内置屬性 | 手把手教你入門Python之五十七 本文來自于千鋒教育在阿裡雲開發者社群學習中心上線課程 《Python入門2020最新大課》 ,主講人姜偉。

面向對象練習

房子(House)有戶型、總面積、剩餘面積 和 家具名稱清單 屬性

新房子沒有任何的家具

将 家具的名稱 追加到 家具名稱清單 中

判斷 家具的面積 是否 超過剩餘面積,如果超過,提示不能添加這件家具

家具(Furniture)有 名字 和 占地面積屬性,其中

席夢思(bed)占地 4 平米

衣櫃(chest)占地 2 平米

餐桌(table)占地 1.5 平米

将以上三件 家具 添加到 房子 中

列印房子時,要求輸出:戶型、總面積、剩餘面積、家具名稱清單

class House(object):
    # 預設參數
    def __init__(self,house_type, total_area, fru_list=None):
        if fru_list is None:  # 如果這個值是None
            fru_list = []   # 将fru_list設定為空清單

        self.house_type = house_type
        self.total_area = total_area
        self.free_area = total_area * 0.6
        self.fru_list = fru_list

    def add_fru(self, x):
        if self.free_area < x.area:
            print('剩餘面積不足,放不進去了')
        else:    
            self.fru_list.append(x.name)
            self.free_area -= x.area

    def __str__(self):
        return '戶型={}, 總面積={}, 剩餘面積={}, 家具清單={}'.format(self.house_type, self.total_area, self.free_area, self.fru_list)

class Furniture(object):
    def __init__(self, name, area):
        self.name = name
        self.area = area


# 建立房間對象的時候,傳入戶型和總面積
house = House('一室一廳', 20)


bed = Furniture('席夢思', 4)
chest = Furniture('衣櫃', 2)
table = Furinture('餐桌', 1.5)
sofa = Furinture('沙發', 10)


# 把家具添加到房間裡(面向對象關注點:讓誰做)
house.add_fru(sofa)
house.add_fru(bed)
house.add_fru(chest)
house.add_fru(table)

print(house)           

執行結果:

面向對象案例講解 | 手把手教你入門Python之五十六

配套視訊