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

自定义nx.MultiDiGraph子类调用add_edge传weight参数报错如何解决

问题原因
  • 你重写的add_edge方法仅声明了接收任意数量的位置参数*args,没有对关键字参数做接收处理,调用时传入的weight=35属于关键字参数,无法被*args捕获,因此直接抛出参数不匹配的错误。
  • NetworkX原生的add_edge方法除了接收起点、终点两个位置参数外,还支持传入任意关键字参数作为边的属性,你的重写方法没有兼容这个设计。
修复方案

把重写的add_edge方法参数改为同时接收*args和**kwargs,调用父类方法时把两类参数都传入即可,修复后代码如下:

class ClassName(nx.MultiDiGraph):
    def __init__(self):
        super().__init__()
        self._dirty = True 
        self._critical_path = None

    def add_edge(self, *args, **kwargs):
        """ add one edge """
        self._dirty = True
        super().add_edge(*args, **kwargs)
补充说明

如果需要在调用add_edges_from等批量添加边的方法时也同步更新_dirty标记,建议用同样的参数定义方式重写对应方法,先更新_dirty标记再调用父类的对应实现即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:06:01