面向对象练习不是预期的结果?
HouseItem: (, name, area): .name = name .area = area (): .name.areabed = HouseItem(, ) chest = HouseItem(, ) table = HouseItem(, ) House: (, house_type, area): .house_type = house_type .area = area .free_area = area .item_list = [] (): .house_type.area.free_area.item_list(, item): (item.name) .free_area < item.area: (item.name) : .item_list.append(item) (item.name) .free_area -= item.area myHome = House(, ) myHome.add_item(bed) myHome.add_item(chest) myHome.add_item(table) (myHome)
执行结果:
E:\PythonWorkSpace\.venv\Scripts\python.exe E:\PythonWorkSpace\python进阶\py家具摆放.py
要添加的家具是席梦思.
席梦思添加成功
要添加的家具是衣柜.
衣柜添加成功
要添加的家具是桌子.
桌子添加成功
户型:两室一厅, 总面积:80, 剩余面积:72.5, 家具列表:[<__main__.HouseItem object at 0x0000014FC17F5400>, <__main__.HouseItem object at 0x0000014FC3155590>, <__main__.HouseItem object at 0x0000014FC31556D0>]
Process finished with exit code 0
为啥执行后家具列表打印的类对象名称这样的信息。
教程视频里面打印的确实实际的值:

怎么回事??
5
收起
正在回答 回答被采纳积分+1
3回答
石破天老师
2025-10-10 09:43:16
看下这段代码 你复制到pycharm中执行一下
class HouseItem: # 初始化方法:简化对象的创建 def __init__(self, name, area): # self.属性 = 形参 self.name = name self.area = area # 内置方法__str__(self):简化对象的输出 def __str__(self): # 这个方法需要注意必须要返回一个字符串 # .2f 表示在遇到小数的时候只保留2位小数 return "[%s] 占地面积是%.2f 平方米" % (self.name, self.area) class House(): def __init__(self, house_type, area): self.house_type = house_type self.area = area # 剩余面积 self.free_area = area # 剩余面积初始值是总面积 # 家具名称列表 self.item_list = [] # 家具列表一开始是一个空列表 def __str__(self): # python小技巧: Python能够自动的将一对括号内部的代码连接在一起不出错,因为代码过程所以这里用了小括号 return ("户型:%s\n总面积:%.2f [剩余面积:%.2f]\n家具:%s" % (self.house_type, self.area, self.free_area, self.item_list)) # 添加家具方法 def add_item(self, item): print("要添加%s" % item) # 1.判断家具的面积 if item.area > self.free_area: print("%s 的面积太大了,无法添加" % item.name) return # return关键字可以返回结果也可以不返回结果,下方代码不会被执行 # 2. 将家具添加到家具列表中 self.item_list.append(item.name) # 3. 计算剩余面积 self.free_area -= item.area # 1. 创建家具对象 bed = HouseItem("席梦思", 4) chest = HouseItem("衣柜", 2.5) table = HouseItem("餐桌", 2) print(bed) print(chest) print(table) # 2. 创建房子对象 house1 = House("两室一厅", 80) # 调用添加方法,把家具都添加到新房子中 house1.add_item(bed) house1.add_item(chest) house1.add_item(table) print(house1)
class HouseItem: # 初始化方法:简化对象的创建 def __init__(self, name, area): # self.属性 = 形参 self.name = name self.area = area # 内置方法__str__(self):简化对象的输出 def __str__(self): # 这个方法需要注意必须要返回一个字符串 # .2f 表示在遇到小数的时候只保留2位小数 return "[%s] 占地面积是%.2f 平方米" % (self.name, self.area) class House(): def __init__(self, house_type, area): self.house_type = house_type self.area = area # 剩余面积 self.free_area = area # 剩余面积初始值是总面积 # 家具名称列表 self.item_list = [] # 家具列表一开始是一个空列表 def __str__(self): # python小技巧: Python能够自动的将一对括号内部的代码连接在一起不出错,因为代码过程所以这里用了小括号 return ("户型:%s\n总面积:%.2f [剩余面积:%.2f]\n家具:%s" % (self.house_type, self.area, self.free_area, self.item_list)) # 添加家具方法 def add_item(self, item): print("要添加%s" % item) # 1.判断家具的面积 if item.area > self.free_area: print("%s 的面积太大了,无法添加" % item.name) return # return关键字可以返回结果也可以不返回结果,下方代码不会被执行 # 2. 将家具添加到家具列表中 self.item_list.append(item.name) # 3. 计算剩余面积 self.free_area -= item.area # 1. 创建家具对象 bed = HouseItem("席梦思", 4) chest = HouseItem("衣柜", 2.5) table = HouseItem("餐桌", 2) print(bed) print(chest) print(table) # 2. 创建房子对象 house1 = House("两室一厅", 80) # 调用添加方法,把家具都添加到新房子中 house1.add_item(bed) house1.add_item(chest) house1.add_item(table) print(house1)
ROS2 机器人应用开发工程师
- 参与学习 57 人
- 提交作业 60 份
2025年机器人领域火爆,人才稀缺,成为智能机器人开发工程师正当时 深度对标高薪岗位技能模型,构建更有核心竞争力的技能体系 保姆式教学+简历指导+1V1 模拟面试+3 次内推,为你的学习保驾护航
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星