1、应用:房屋存放家具 定义房间类,能够存储房间的大小和房间里的所有家具,并且要能够添加和移除家具;
#定义一个home类
class Home:
def __init__(self, area):
self.area = area #房间剩余的可用面积
#self.light = 'on' #灯默认是亮的
self.containsItem = []
def __str__(self):
msg = "当前房间可用面积为:" + str(self.area)
if len(self.containsItem) > 0:
msg = msg + " 容纳的物品有: "
for temp in self.containsItem:
msg = msg + temp.getName() + ", "
msg = msg.strip(", ")
return msg
#容纳物品
def accommodateItem(self,item):
#如果可用面积大于物品的占用面积
needArea = item.getUsedArea()
if self.area > needArea:
self.containsItem.append(item)
self.area -= needArea
print("ok:已经存放到房间中")
else:
print("err:房间可用面积为:%d,但是当前要存放的物品需要的面积为%d"%(self.area, needArea))
#定义bed类
class Bed:
def __init__(self,area,name = '床'):
self.name = name
self.area = area
def __str__(self):
msg = '床的面积为:' + str(self.area)
return msg
#获取床的占用面积
def getUsedArea(self):
return self.area
def getName(self):
return self.name
#创建一个新家对象
newHome = Home(100)#100平米
print(newHome)
#创建一个床对象
newBed = Bed(20)
print(newBed)
#把床安放到家里
newHome.accommodateItem(newBed)
print(newHome)
#创建一个床对象
newBed2 = Bed(30,'席梦思')
print(newBed2)
#把床安放到家里
newHome.accommodateItem(newBed2)
print(newHome)
#创建一个床对象
newBed3 = Bed(60,'上下床')
print(newBed3)
#把床安放到家里
newHome.accommodateItem(newBed3)
print(newHome)
上述代码定义了一个简单的家类Home
和一个床类Bed
。Home
类表示一个房间,其中包含一个属性area
表示房间的总面积和一个列表containsItem
用于存储放在房间中的物品。accommodateItem
方法用于向房间中添加物品,如果剩余空间足够则将物品加入列表。
Bed
类表示床,其中包含一个属性area
表示床的面积。getUsedArea
方法用于获取床的占用面积,getName
方法用于获取床的名称。
在测试代码中,首先创建一个家对象newHome
,其初始可用面积为100平米。然后创建一个床对象newBed
,将其添加到家里并输出家的信息。接着创建另一个床对象newBed2
,再次将其添加到家里并输出家的信息。注意到虽然第三个床对象newBed3
的面积为60,但由于房间剩余面积只有50,因此无法将其添加到房间中。