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

AttributeError求助:Graph类无edges_list属性问题排查

问题原因与修复方案

错误根源

报错AttributeError: type object 'Graph' has no attribute 'edges_list'的核心原因:

  • edges_list是Graph类的实例属性,只有创建Graph对象(比如graph = Graph('edges.csv'))时,才会在__init__中初始化该属性。
  • 你在__main__里用Graph.generate_graph(Graph,'edges.csv')调用方法时,是把Graph类本身作为self传入,但类本身并没有edges_list属性,因此触发报错。
  • 额外问题:创建graph实例时,__init__方法已经自动调用了generate_graph,手动调用完全多余。

修复代码

只需删除错误的手动调用,修改后的__main__块如下:

if __name__ == '__main__':
    graph = Graph('edges.csv')
    # 以下是错误代码,直接删除
    # Graph.generate_graph(Graph,'edges.csv')

额外优化建议

  • 文件资源管理:nodes_file未使用with语句,易导致资源泄漏,建议修改为:
    with open('nodes.csv','r') as nodes_file:
        nodes_file_content = nodes_file.readlines()
        # 若无需使用nodes_file_content,可直接省略这行
    
  • 参数冗余处理:generate_graph的edges_file参数未被使用,方法内硬编码了'edges.csv',建议统一使用实例的self.edges_file:
    def generate_graph(self):
        # 移除edges_file参数
        with open(self.edges_file, 'r') as edges_file:
            # 后续逻辑保持不变
    
    同时将__init__里的调用改为self.generate_graph()
  • 节点创建优化:当前代码中self.node_set.add(self.Node(node_name).name)无需创建Node实例,直接添加字符串即可节省内存:
    self.node_set.add(node_name)
    self.node_set.add(neighbor_name)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:45:37