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

Python自定义Node类打印neighbours属性显示内存地址该如何解决?

问题原因

你自定义的Node类没有定义实例的字符串表示方法,Python打印自定义类的实例时,默认会输出<类名 object at 内存地址>格式的内容。你存在neighbours列表里的都是Node类的实例,所以打印时就会显示内存地址而不是预期的节点名称。

解决方案

共有两种常用的解决方法:

  • 方法1:给Node类添加__repr__魔法方法,定义实例作为容器元素打印时的显示效果
    代码修改如下:

    class Node:
        def __init__(self, name):
            self.name = name
            self.neighbours = []
        
        # 新增__repr__方法定义实例打印效果
        def __repr__(self):
            # 如果只需要显示节点名直接返回self.name即可
            return self.name
            # 如果需要更清晰的标识可以用下面的写法
            # return f"Node(name='{self.name}')"
    

    修改完成后运行原代码,输出结果为{'a': ['d']},符合预期。

  • 方法2:不修改类定义,构造关系字典时主动提取节点的name属性
    直接将node_rela[a.name] = a.neighbours替换为下面的代码即可:

    node_rela[a.name] = [node.name for node in a.neighbours]
    

    该方法会直接将邻居列表里的所有Node实例转换为名称字符串存入字典,打印时自然就不会出现内存地址。

内容的提问来源于stack exchange,提问作者EmptyMind

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:45:09