多态练习

  • 练习


    '''
    1).房子类 有户型,总面积和家具名称列表[]
          新房子没有任何的家具
         def __init__(self,hx,area):
            self.hx=hx
            self.area= area
            self.lists=[]
        添加家具
        add_furniture(self,furniture):
        
        展示方法:show(self)
        户型
        剩余
        放了哪些家具
            
    2) .家具类 有名字和占地面积属性,
        class Furniture:
            ....
            
        class Bed(Furniture):
            ....
            
        class Desk(Furniture):
           ....
        ...
       创建家具对象:
        		床:占4平米
        		衣柜:占2平面
        		餐桌:占1.5平米
    3).将以上三件家具添加到房子中
    4).打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表
    
    '''
    

    class House:
        def __init__(self, hx, area):
            self.hx = hx
            self.area = area
            self.lists = []
    
        # 添加家具
        def add_furniture(self, furniture):  # furniture = table
            if isinstance(furniture, Furniture):
                # 添加到家具列表
                self.lists.append(furniture)
                # 从总面积减去家具的面积
                self.area -= furniture.area
                print('添新家具了')
            else:
                print('不能随便往家里搬哦!')
    
        # 展示
        def show(self):
            print('户型:', self.hx)
            print('剩余面积:', self.area)
            print('家具如下:')
            for f in self.lists:
                print(f)
    
    
    class Furniture:
        def __init__(self, name, area):
            self.name = name
            self.area = area
    
        def __str__(self):
            return self.name + '占用面积:' + str(self.area)
    
    
    class Bed(Furniture):
        pass
    
    
    class Table(Furniture):
        pass
    
    
    class Robe(Furniture):
        pass
    
    
    bed = Bed('床', 4)
    
    table = Table('桌子', 1.5)
    
    robe = Robe('衣柜', 12)
    
    
    house = House('2室一厅', 88)
    
    house.add_furniture(bed)
    house.add_furniture(table)
    house.add_furniture(robe)
    
    house.show()
    

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值