Python中super()使用疑问:类传递实例引发__init__参数错误
问题分析与解决方案
嘿,这个问题和super()其实没啥关系,咱们直接抓核心原因就好~
你遇到的__init__不接受任何参数错误,本质是你给ClassB传了参数,但ClassB的构造方法根本没定义接收这个参数。
举个例子,如果你的ClassB是这么写的:
class ClassB(object): def __init__(self): # 这里只定义了默认的self,没有额外参数 pass
那当你在ClassC里执行self.derived_class = ClassB(self)时,相当于给ClassB的__init__多传了一个参数,自然会触发错误。
解决步骤
- 修改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}")
- 你的ClassC代码保持不变即可:
class ClassC(object): def __init__(self): self.val = 8 self.derived_class = ClassB(self)
这样运行起来就不会报错啦,你可以在ClassB里通过保存的c_instance访问ClassC的所有属性和方法。
内容的提问来源于stack exchange,提问作者wandadars
相关产品推荐
相关产品推荐

