需求:
1.房子有户型,总面积和家具名称列表,新房子没有任何的家具
2.家具有名字和占地面积,其中:
床: 占4平米 衣柜: 占2平面 餐桌: 占1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表
分析:
1.由于要将家具放入房子中,所以需要先创建家具类
2.家具类:
(1)属性:名字(name),占地面积(area)
(2)对象:床(bed),衣柜(closet),餐桌(table)
3.房子类:
(1)属性:户型(house_style),总面积(zarea),家具名称列表(namelist) (新房子没有任何的家具,即初始家具名称列表为空列表),剩余面积(farea) (由于打印房子时,要求输出'剩余面积',所以剩余面积为房子的隐含属性)
(2)方法:添加家具(add_item)
class Furniture():
def __init__(self, name, area):
self.name = name
self.area = area
# 1.先建立家具类和房子类
# 2.房子里面的剩余面积初始值设置为总面积
# 3.只要往房子里面添加家具,就令剩余面积等于总面积-家具面积
# 4.创建添加家具的方法和输出房子当前信息的方法
class Home():
def __init__(self, house_style, zarea):
self.house_style = house_style
self.zarea = zarea
self.namelist = []
self.farea = self.zarea
# 5.添加家具的方法里面的形参设置为可变参数 *furniture,再将它转换为列表, 然后再计算剩余面积
def add_item(self, *furniture):
self.namelist = list(furniture)
sum = 0
for i in self.namelist:
sum += i.area
self.farea = self.zarea - sum
# 6.创建输出信息方法,输出的时候分两步
# 7.第一步,输出户型,总面积,剩余面积
# 8.第二部,输出家具列表以及家具的详细信息
def output(self):
print("该房子的户型:" + self.house_style + "\n" + "总面积为:" + str(self.zarea) +
"\n" + "剩余面积:" + str(self.farea))
print("家具列表为:")
for i in self.namelist:
print(i.name + " area:" + str(i.area))
bed = Furniture("bed", 4)
closet = Furniture("closet", 2)
table = Furniture("table", 1.5)
home01 = Home("小", 10)
home01.add_item(bed, closet, table)
home01.output()
结果: