摆放家具案例
房子有户型、总面积和家具名称列表。新房子里没有家具。
家具有名字和占地面积。
席梦思床占地4平米
衣柜占地2平米
餐桌占地1.5平米
将家具添加到房子中。
输出房子的户型、总面积、剩余面积和家具名称列表。
程序设计
分析发现,案例中包含两个类,一个房子类,一个家具类。
房子类包含的属性有:户型、占地面积、家具列表
房子类包含的方法有:添加家具方法
家具类包含的属性有:家具名称、占地面积
家具类不包含方法
因为家具类如果要调用添加家具方法,需要有具体的家具,所以我们需要首先定义家具类,然后用家具类生成几个家具对象方便调用。
# *-*coding:utf-8 *-*
class Furniture:
def __init__(self, fur_name, fur_area):
self.name = fur_name
self.area = fur_area
def __str__(self):
return "%s占地%.2f" % (self.name, self.area)
bed = Furniture("席梦思", 4)
closet = Furniture("衣柜", 2)
table = Furniture("餐桌", 1.5)
家具生成好之后,我们就可以开始定义房子类,因为房子类初始的时候没有家具,所以可以先定义户型、总面积两个属性。此外还有两个属性,剩余面积和家具名称列表,可以通过直接赋值或计算得到。可以将列表当做类的属性。
只有需要从外部传递进来的参数,才需要定义成初始化方法的形参。
通过__str__
方法可以通过print()
方法打印通过房子类生成的对象的描述。
当我们先定义好了一个房子类后,不妨先生成一个房子对象,然后打印输出一下看一看效果,后续再封装添加家具的方法。
class House:
def __init__(self, house_type, area):
self.type = house_type
self.area = area
self.furniture = []
self.free_area = area
def add(self, item):
print("要添加%s" % item)
pass
def __str__(self):
return "%s的房子:\n总面积%.2f\n含有家具%s\n剩余面积%.2f" % \
(self.type, self.area, self.furniture, self.free_area)
my_home = House("两室一厅", 60)
print(my_home)
添加家具的方法
1,首先判断家具面积是否大于剩余面积。
2,将家具名称追加到家具名称列表中。
3,用房子的剩余面积减去家具的面积。
def add(self, item):
print("要添加%s" % item)
# 判断家具面积是否大于剩余面积
if item.area > self.free_area:
print("家具太大了")
return
# 添加家具到家具列表
self.furniture.append(item.name)
# 用房子剩余面积减去家具面积
self.free_area -= item.area
最后完成代码,并将家具一个个摆进去:
# *-*coding:utf-8 *-*
class Furniture:
def __init__(self, fur_name, fur_area):
self.name = fur_name
self.area = fur_area
def __str__(self):
return "%s占地%.2f" % (self.name, self.area)
class House:
def __init__(self, house_type, area):
self.type = house_type
self.area = area
self.furniture = []
self.free_area = area
def add(self, item):
print("要添加%s" % item)
# 判断家具面积是否大于剩余面积
if item.area > self.free_area:
print("家具太大了")
return
# 添加家具到家具列表
self.furniture.append(item.name)
# 用房子剩余面积减去家具面积
self.free_area -= item.area
def __str__(self):
return "%s的房子:\n总面积%.2f\n含有家具%s\n剩余面积%.2f" % \
(self.type, self.area, self.furniture, self.free_area)
bed = Furniture("席梦思", 4)
closet = Furniture("衣柜", 2)
table = Furniture("餐桌", 1.5)
print(bed)
print(closet)
print(table)
my_home = House("两室一厅", 60)
my_home.add(bed)
my_home.add(closet)
my_home.add(table)
print(my_home)
最后输出的结果是:
席梦思占地4.00
衣柜占地2.00
餐桌占地1.50
要添加席梦思占地4.00
要添加衣柜占地2.00
要添加餐桌占地1.50
两室一厅的房子:
总面积60.00
含有家具['席梦思', '衣柜', '餐桌']
剩余面积52.50
还不错,我什么时候能够在一线城市郊区拥有一套两室一厅60平米的房子就好了。