__init__:将__init__参数(dict)继承到另一个类的__init__方法?

问题描述:

即使在检查了SO中提出的许多问题之后,我仍然感到困惑。我有2个不同的类(2个不同的脚本)&我想继承超类的__init__方法的参数。__init__:将__init__参数(dict)继承到另一个类的__init__方法?

script1.py

class MainClass(): 
    def __init__(self,params): 
     self.one=params['ONE'] 
     self.two=params['TWO'] 
     self.three=params['THREE'] 
     self.four=params['FOUR'] 
     self.five=params['FIVE'] 

    def a(): 
     #--------- 
     #somecode 
     #Initializing other class's object to access it's method. 
     s=SubClass() #HERE I WANT TO PASS 'PARAMS' (WHICH IS A DICTIONARY) 
     s.method1(....) 

script2.py

class SubClass(SuperClass): 
    def __init__(self,params): 
     #Here I want all the parameters inside the 'param' in super class. 
     #(one,two,three...., etc). 
     #By checking some SO questions, I changed class SubClass() --> 
     #class Subclass(SuperClass) & below line: 
     MainClass.__init__(self,params) #But technically I don't have anything 
             #in param in subclass. 

    def method1(): 
     #some code... 

由于子类的PARAM没有任何东西,它给了我一个错误:

self.one=params['ONE'] 
TypeError: 'int' object has no attribute '__getitem__' 

我不是得到:

  1. 如何以最简单的方式访问超类的所有参数到子类?我不想将个别参数(如self.one,self.two ..)传递给子类。

  2. 如果我打电话给​​里面的第三类 - >method1 - >打电话给第三类,和传递'params'一样。可能吗?

+1

我很难理解你想要什么。你能否提供一些代码示例来说明如何初始化和与'SubClass'交互? – Karin

+0

什么是'SuperClass'? –

+0

'def __init __(self,* args,** kwargs):MainClass .__ init __(self,* args,** kwargs)'? –

这是你所需要的?

script1.py

class MainClass(): 
    def __init__(self,params): 
     # Save params for use by a 
     self.params = params 
     self.one=params['ONE'] 
     self.two=params['TWO'] 
     ... 
     self.five=params['FIVE'] 

    def a(): 
     s=SubClass(self.params) 
     s.method1(...) 

script2.py

class SubClass(SuperClass): 
    def __init__(self,params): 
     MainClass.__init__(self,params) 

    def method1(): 
     #some code... 

您可以通过从子类的__init__()任何和所有的非关键字参数给超是这样的:

class SubClass(SuperClass): 
    def __init__(self, *params): 
     MainClass.__init__(self, *params) 
     ... 

这个想法也适用于其他方法。

+0

Dave:请阅读[_当有人回答我的问题时该怎么办?_](http://*.com/help/someone-answers)。 – martineau