面向对象的案例(摆放家具)
2019-07-01 本文已影响50人
马路仔
需求
1.房子(House)有户型、总面积和家具名称列表
新房子没有任何的家具
2.家具(HouseItem)有名字和占地面积,其中
席梦思(bed)占地4平米
衣柜(chest)占地2平米
餐桌(table)占地1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表
HouseItem |
---|
naem、area |
_ init_(self,name,area):、 _str _(self): |
HouseItem |
---|
house_type、area、free_area、item_list |
_ init_(self,house_type,area):、 _str _(self):、 add_item(self,item) |
剩余面积
1、在创建房子对象时,定义一个 剩余面积的属性、初始值和总面积相等
2、当调用 add_item() 方法,向房间添加家具时,让剩余面积 -= 家具面积
思考应该先开发哪一类?
应该先家具类
1.家具简单
2.房子要使用到家具,被使用的类,通常应该先开发
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):
#Python 能够自动的将一对括号内部的代码连接在一起
return ("户型:%s\n总面积:%.2f[剩余:%2.f]\n家具:%s"
%(self.house_type,self.area,
self.free_area,self.item_list))
def add_item(self,item):
print("要添加 %s" % item)
#1.判断家具的面积
if item.area > self.free_area:
print("%s 的面积太大了,无法添加" % item.name)
return
#2.将家具的名称添加到列表中
self.item_list.append(item.name)
#3.计算剩余面积
self.free_area -= item.area
#1.创建家具
bed = HouseItem("席梦思",40)
chest =HouseItem("衣柜",2)
table = HouseItem("餐桌",4)
print(bed)
print(chest)
print(table)
#2.创建房子对象
my_home = House("两室一厅", 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)
运行结果
image.png