Python面向对象:房子添加家具

需求:有一套一室一厅、55平米的房子要装修摆放家具,房子有户型、总面积、剩余面积,家具列表四个属性。家具有占地面积和名称两个属性,家具类的对象有:双人床占地4平米,桌子占地1.5平米,衣柜占地2.5平米。将以上家具添加到房子中。
根据需求先创建家具的类和对象:

class HouseItem:

    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "%s占地%.2f平米" % (self.name, self.area)

bed = HouseItem("双人床", 4)
table = HouseItem("桌子", 1.5)
chest = HouseItem("衣柜", 2.5)

print(bed)
print(table)
print(chest)

结果:
双人床占地4.00平米
桌子占地1.50平米
衣柜占地2.50平米

然后再创建房子来添加家具的对象:

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\n总面积:%.2f【剩余面积:%.2f】\n家具:%s"
                % (self.house_type, self.area,
                   self.free_area, self.item_list))

    def add_item(self, item):
        print("要添加%s" % item)
        #判断家具面积是否大于剩余面积,若大于则提示不能添加
        if item.area > self.free_area:
            print("%s占地面积太大,无法添加到房子" % item.name)
            return
        #添加的家具追加到列表
        self.item_list.append(item.name)
        #剩余面积=剩余面积-家具面积
        self.free_area -= item.area

my_home = House("一室一厅", 55)
my_home.add_item(bed)
my_home.add_item(table)
my_home.add_item(chest)

print(my_home)

结果:
要添加双人床占地4.00平米
要添加桌子占地1.50平米
要添加衣柜占地2.50平米
户型:一室一厅
总面积:55.00【剩余面积:47.00】
家具:[‘双人床’, ‘桌子’, ‘衣柜’]

你可能感兴趣的:(Python面向对象:房子添加家具)