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

子类化rustworkx.PyGraph时super().__init__传参报错求助

子类化rustworkx.PyGraph时的关键字参数问题解决

问题原因

从你提供的PyGraph类型定义能看到,__init__方法参数列表里的/是位置-only参数的标记,这意味着multigraph参数只能通过位置传递,不能用关键字参数的形式传入。

你在子类__init__里用super().__init__(multigraph=multigraph)时,Python会把multigraph=xxx当作命名参数传递,但PyGraph的底层Rust实现只接受位置参数,因此触发了object.__init__() takes exactly one argument的错误——本质是参数传递方式不匹配。

另外,multigraph是Rust内部维护的只读属性,无法通过直接赋值修改,所以第二个尝试也会失败。

修复方案

调用父类构造器时,把multigraph作为位置参数传递即可:

import rustworkx

class Graph(rustworkx.PyGraph):
    def __init__(self, multigraph=False):
        # 用位置参数传递multigraph,而非关键字参数
        super().__init__(multigraph)

regular_graph = rustworkx.PyGraph(multigraph=False)
print(f"The first graph is a multigraph: {regular_graph.multigraph}")

try:
    my_graph = Graph()
    print(f"My graph is a multigraph: {my_graph.multigraph}")
    # 验证传参生效
    my_multi_graph = Graph(multigraph=True)
    print(f"My multi graph is a multigraph: {my_multi_graph.multigraph}")
except Exception as e:
    print(f"Error: {e}")

运行结果

The first graph is a multigraph: False
My graph is a multigraph: False
My multi graph is a multigraph: True

这样就能正常初始化子类实例,并且正确传递multigraph参数了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:46:02