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

Python中super()使用疑问:类传递实例引发__init__参数错误

问题分析与解决方案

嘿,这个问题和super()其实没啥关系,咱们直接抓核心原因就好~

你遇到的__init__不接受任何参数错误,本质是你给ClassB传了参数,但ClassB的构造方法根本没定义接收这个参数。

举个例子,如果你的ClassB是这么写的:

class ClassB(object):
    def __init__(self):
        # 这里只定义了默认的self,没有额外参数
        pass

那当你在ClassC里执行self.derived_class = ClassB(self)时,相当于给ClassB的__init__多传了一个参数,自然会触发错误。

解决步骤

  1. 修改ClassB的__init__方法,让它明确接收ClassC的实例作为参数:
class ClassB(object):
    def __init__(self, c_instance):
        # 把传入的ClassC实例保存为属性,方便后续使用
        self.c_instance = c_instance
        # 现在可以直接访问ClassC的val属性了
        print(f"拿到ClassC的val值:{self.c_instance.val}")
  1. 你的ClassC代码保持不变即可:
class ClassC(object):
    def __init__(self):
        self.val = 8
        self.derived_class = ClassB(self)

这样运行起来就不会报错啦,你可以在ClassB里通过保存的c_instance访问ClassC的所有属性和方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:24:50