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

如何继承含__init__的类并传参?实例化Switch类的正确方式

解决Switch类实例化并传入dDict的问题

首先看你的代码,问题出在Switch类的__init__方法上:它既没有接收dDict参数,也没有调用父类Buttons的构造方法,导致父类需要的dDict没法被正确初始化,而且还重复初始化了self.TCT(除非你特意要覆盖父类的实例,否则这步是多余的)。

正确的修改方式

你需要调整Switch的__init__,让它接收dDict参数,并通过super()调用父类的构造方法来传递这个参数:

class Buttons():
    def __init__(self, dDict):
        self.TCT = Tool()
        self.dDict = dDict
    def btnName(self):
        a = self.dDict['setup']
        # 这里可以添加后续逻辑

class Switch(Buttons):
    def __init__(self, dDict):
        # 调用父类的构造方法,传递dDict参数
        super().__init__(dDict)
        # 如果不需要覆盖父类的TCT实例,就删除下面这行
        # self.TCT = Tool()

实例化Switch的正确方式

现在你可以像这样传入dDict来实例化Switch:

# 先定义你的dDict字典
my_dDict = {"setup": "example_value"}
# 实例化Switch
switch_obj = Switch(my_dDict)

# 测试调用btnName方法,现在能正常访问dDict了
switch_obj.btnName()

为什么要这么做?

  • super().__init__(dDict)会触发父类Buttons的构造方法,这样父类里的self.dDict会被正确赋值,btnName方法就能正常使用这个属性了。
  • 父类已经初始化了self.TCT,如果Switch里没有特殊需求(比如要使用不同的Tool实例),完全不需要重复初始化,否则会覆盖父类的TCT实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:43:21