面向对象练习不是预期的结果?

面向对象练习不是预期的结果?

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



为啥执行后家具列表打印的类对象名称这样的信息。


教程视频里面打印的确实实际的值:


https://img1.sycdn.imooc.com/climg/33ae886809e5f8c326240548.jpg


怎么回事??

正在回答 回答被采纳积分+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)
石破天老师 2025-10-09 20:27:23
22  23行 改一下
return ("户型:%s\n总面积:%.2f [剩余面积:%.2f]\n家具:%s" % (self.house_type, self.area, self.free_area, self.item_list))
柳絮飞花 提问者 2025-10-08 13:45:24

https://img1.sycdn.imooc.com/climg/3fecae6809e5fa5b26911999.jpg


贴下代码?


  • 提问者 柳絮飞花 #1

    https://img1.sycdn.imooc.com/climg/85cfcd6809e7bcab36051799.jpg


    还是不行。

    2025-10-09 21:46:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师