__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__'
我不是得到:
如何以最简单的方式访问超类的所有参数到子类?我不想将个别参数(如self.one,self.two ..)传递给子类。
如果我打电话给里面的第三类 - >
method1
- >打电话给第三类,和传递'params'一样。可能吗?
答
这是你所需要的?
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
我很难理解你想要什么。你能否提供一些代码示例来说明如何初始化和与'SubClass'交互? – Karin
什么是'SuperClass'? –
'def __init __(self,* args,** kwargs):MainClass .__ init __(self,* args,** kwargs)'? –