如何继承含__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
相关产品推荐
相关产品推荐

