You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python类中返回列表?当前仅返回对象内存地址

解决思路

你遇到的问题和__iter__没关系——__iter__只是让实例能被迭代(比如用for循环遍历),但打印对象时默认调用的是__str__或__repr__方法,你的ListNode类没重写这两个方法,所以print会输出默认的对象内存地址。

下面是几种可行的解决方法:

方法1:重写__str__或__repr__方法

直接在ListNode类里添加这两个方法的任意一个,让print时返回列表的字符串形式:

class ListNode:
    # 先修复可变默认参数的坑:不要用[]作为默认值,改用None
    def __init__(self, val=None):
        self.val = val if val is not None else []

    def __iter__(self):
        return iter(self.val)
    
    # 用于友好的用户输出
    def __str__(self):
        return str(self.val)
    
    # 可选:用于开发者视角的精准表示(比如在终端直接输入实例时显示)
    def __repr__(self):
        return f"ListNode({self.val})"

修改后再运行print(list_instances()),就会直接输出你想要的列表内容。

方法2:直接访问实例的val属性

如果不想修改ListNode类,也可以在打印时直接输出实例的val属性:

if __name__=="__main__":
    print(list_instances().val)

额外提醒:修复可变默认参数的问题

你的ListNode.__init__用了val=[]作为默认参数,这是Python的常见坑——多次实例化ListNode且不传入val时,所有实例会共享同一个列表。上面的方法1已经修复了这个问题,建议你始终避免用可变对象(列表、字典等)作为函数/方法的默认参数。

内容的提问来源于stack exchange,提问作者stang-Spitfire1975

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:50:33