引言
python小程序之封装(家具管理)
文章目录
- 引言
- 一、封装(家具管理)
- 1.1 题目
- 1.2 代码
- 1.3 代码解释
- 1.3.1 类 `HouseItem`
- 1.3.2 类 `House`
- 1.3.3 实例化与调用
- 1.3.4 运行结果
- 四、思考
一、封装(家具管理)
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 代码解释
这段代码定义了两个类:
House
和HouseItem
。它们分别用来表示房子和家具
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首先要判断能否添置家具,其次对家具列表、剩余面积进行更新