我想继承现有的 scons 类(名为SConsEnvironment
),该类具有以下__init__
原型:
def __init__(self,
platform=None,
tools=None,
toolpath=None,
variables=None,
parse_flags = None,
**kw):
在我自己的班级Environment
中,我从SConsEnvironment
派生,我试图这样做:
def __init__(self,
platform=None,
tools=None,
toolpath=None,
variables=None,
parse_flags = None,
**kw):
if ('ENV' not in kw):
kw['ENV'] = os.environ.copy()
super(EIDEnvironment, self).__init__(
platform,
tools,
toolpath,
variables,
parse_flags,
kw) //Error here
Python抱怨:
TypeError: __init__() takes at most 6 arguments (7 given):
除非我不知道如何计算,似乎两个__init__
函数都有7个参数。我确信有一个很好的理由不这样做,但它是什么,我该如何解决这个问题呢?
答案 0 :(得分:3)
在super(EIDEnvironment, self).__init__(...)
来电中,将kw
更改为**kw
。由于代码是当前编写的,因此您传递的是包含关键字args的字典,但实际上并未将它们作为关键字args传递。
答案 1 :(得分:1)
我想你需要解压 kw ,否则你把它作为字典传递:
super(EIDEnvironment, self).__init__(
platform,
tools,
toolpath,
variables,
parse_flags,
**kw)