【python实操】python小程序之封装(家具管理)

引言

python小程序之封装(家具管理)

一、封装(家具管理)

1.1 题目

1.房子(House)有户型、总面积和家具名称列表

  • 新房子没有任何的家具

2.家具(Houseltem)有名字和占地面积,其中

  • 席梦思(bed)占地4平米
  • 衣柜(chest)占地2平米
  • 餐桌(table)占地1.5平米

3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

剩余面积:

  • 1.在创建房子对象时,定义一个剩余面积的属性,初始值和总面积相等
  • 2.当调用add_item方法,向房间添加家具时,让剩余面积-=家具面积

1.2 代码

class House:
    def __init__(self, htype, tarea):
        self.htype = htype
        self.tarea = tarea
        self.rarea = tarea
        self.list_item = []

    def __str__(self):
        return f'户型:{self.htype},总面积:{self.tarea}平米,剩余面积:{self.rarea}平米,家具列表:{self.list_item}'

    def add_item(self, item):
        if self.rarea >= item.area:
            self.list_item.append(item.name)
            print(f'房子里添加了{item.name},剩余面积减少了')
            self.rarea -= item.area
        else:
            print("家里空间不够了,放不下了")

class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return f'名字:{self.name},占地面积:{self.area}平米'


bad = HouseItem('席梦思', 4)
# print(bad)
chest = HouseItem('衣柜', 2)
# print(chest)
table = HouseItem('餐桌', 1.5)
# print(table)

home = House('四叶草户型', 7)

home.add_item(bad)
print(home)
home.add_item(chest)
print(home)
home.add_item(table)
print(home)

输出结果:
在这里插入图片描述

1.3 代码解释

这段代码定义了两个类:HouseHouseItem。它们分别用来表示房子和家具

1.3.1 类 HouseItem

  • 属性:
    • name: 家具的名字
    • area: 家具占用的面积
  • 方法:
    • __init__(self, name, area): 构造函数,用于初始化一个新的 HouseItem 对象
    • __str__(self): 返回一个描述该对象的字符串

1.3.2 类 House

  • 属性:
    • htype: 房子的户型
    • tarea: 房子的总面积
    • rarea: 房子剩余可使用的面积,初始时等于总面积
    • list_item: 存储已添加到房子里的家具名字列表
  • 方法:
    • __init__(self, htype, tarea): 构造函数,用于初始化一个新的 House 对象
    • __str__(self): 返回一个描述该房子状态的字符串,包括户型、总面积、剩余面积以及家具列表
    • add_item(self, item): 尝试将给定的 HouseItem 添加到房子中。如果房子有足够的空间(即 rarea 大于或等于 item.area),则更新 rarea 并将家具名称添加到 list_item 中;否则,打印出空间不足的消息

1.3.3 实例化与调用

  • 创建了三个 HouseItem 对象:bad (席梦思),chest (衣柜),table (餐桌)
  • 创建了一个 House 对象 home,其户型为“四叶草户型”,总面积为 7 平米
  • 使用 home.add_item() 方法尝试向 home 添加家具,并在每次添加后打印当前的房子状态

1.3.4 运行结果

  • 当第一次尝试添加 bad (席梦思) 时,由于它的面积是 4 平米,小于 home 的剩余面积 7 平米,所以可以成功添加。这时,home 的剩余面积减少到 3 平米
  • 接着添加 chest (衣柜),面积为 2 平米,仍然小于 home 的剩余面积 3 平米,因此也可以成功添加。此时,home 的剩余面积变为 1 平米
  • 最后尝试添加 table (餐桌),面积为 1.5 平米,但是 home 的剩余面积只有 1 平米,不足以容纳这张餐桌,因此会输出“家里空间不够了,放不下了”

通过这个简单的程序,我们可以看到如何使用面向对象的方法来模拟现实世界中的情况,比如管理房屋内的家具布局

四、思考

  • House和HouseItem类有各自的属性和方法
  • House类需要HouseItem类中的数据,就需要在House中初始化一个空列表
  • 添加家具方法add_item首先要判断能否添置家具,其次对家具列表、剩余面积进行更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值