2022-2-11 B-黑马程序员- 类与对象case

#类与对象——房子里放家具
class Item:
    def __init__(self,name,area):
        self.name=name
        self.area=area
       # print(f"{self.name} 的占地面积为 {self.area}")
    
    def __str__(self):
        return "[%s] 占地%.2f 平方 " %(self.name,self.area)
        
        
class House:
    def __init__(self,type,area):
        self.type=type
        self.area=area
        self.free_area=area
        self.item_list=[]
        

    def add_item(self,item):
        #print(f"准备添加{item.name}")
        
        #print(f"准备添加{item}")
        #这里打印的特殊在于,准备添加item是个Item类对象,所以打印后,
        #会把Item str方法中的内容也【接着】打印出来——有趣
        print(f"准备添加{item}")
        
        #如果剩余面积不足,就不能添加家具
        if item.area>self.free_area:
            print(f"空间不足,{item.name}添加失败")
            return
        
        self.item_list.append(item.name)
        self.free_area-=item.area
        
    # def __str__(self):
    #      return "这个 {self.type}面积有 {self.area}\n剩余{self.free_area} .家具有{self.item_list}"    
    
    def __str__(self):
        return ("这个%s ,面积有 %.2f 平米,家具有%s,剩余%.2f 平米" 
                % (self.type,self.area,self.item_list,self.free_area))



        
myhouse=House("两室一厅",60)
print(myhouse)

bed=Item("席梦思",40)
closet=Item("衣柜",5)
desk=Item("桌子",20)

myhouse.add_item(bed)
myhouse.add_item(closet)
myhouse.add_item(desk)
print(myhouse)