为何打印对象时出现两种不同结果?

首先感谢各位大佬的帮忙,本人新手,在尝试做例题的时候,答案提到应该把bed,chest,table用三行my_house.add_items() 分别导入,我在尝试能否直接导入一个列表时,意识到了问题。如果用for遍历,出来的是我想要的,
如:要添加 ['席梦思']:占地4.00
可是如果直接my_house.add_items(item_list), 出现的却是内存地址。

要添加 (<__main__.HouseItem object at 0x0000018A9E566588>, <__main__.HouseItem object at 0x0000018A9E841DD8>, <__main__.HouseItem object at 0x0000018A9E856860>)

难以理解为什么,大概是某些python的基础我还没有打牢,现在完全想不到什么原因,还请各位大佬提点一二。
源代码如下

class HouseItem:

    def __init__(self,name,area):

        self.name = name
        self.area = area

    def __str__(self):

        return '{}:占地{:.2f} \t'.format([self.name],self.area)


class House:

    def __init__(self,house_type,house_area):
        self.house_type = house_type
        self.house_area = house_area

    # 剩余面积
        self.rest_area = house_area
    # 家具名称列表
        self.item_list = []

    def __str__(self):
        return '户型:{}\n总面积: {:.2f}\n家具类型:{}'.format(self.house_type,
                                                    self.house_area,self.item_list)

    def add_items(self,item):
        print('要添加 {}'.format(item))



# 创建家具
bed = HouseItem('席梦思',4)
chest = HouseItem('衣柜',2)
table = HouseItem('餐桌',1.5)

item_test1 = bed,chest,table
item_list = bed,chest,table
item_test2 = [bed,chest,table]

my_house = House('两室一厅',120)
my_house.add_items(item_list)

for n in item_list:
    my_house.add_items(n)

首先你先弄清楚三点

A. 这里你重写了类的__str__方法,打印类对象,会按照你的规则打印

B. House.add_items 方法里的,print('要添加 {}'.format(item)),打印的是item这个对象

C. 变量 item_list,是一个元组,元组里存了三个HouseItem对象

下面开始说你的问题

A. my_house.add_items(item_list) 打印的是内存地址,原因是 add_items 方法打印的是 你传入的item_list 这个元组对象,不是你写的HouseItem的对象,只不过item_list元组里,存的是三个 HouseItem对象,所以打印出来是三个内存地址构成的元组,简而言之,这里print的是元组,不是 HouseItem对象。

B. for 循环遍历,然后 my_house.add_items(n),这种方式,你传入的参数是n,而n是HouseItem对象 ,所以print('要添加 {}'.format(item))的时候,打印的是HouseItem对象,也就是你说的 要添加 ['席梦思']:占地4.00

C. 另外你的House对象创建时的传参没问题

明白了吗?

House 类 接收两个参数 而你只传了一个参数, 总之你这些代码调用的时候全部都是冲突的,建议从基础开始学习,一步一步来