__init__,继承和可变参数参数
问题描述:
我想继承现有scons的类(命名为SConsEnvironment
),它具有以下__init__
原型:__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个参数。我确信有一个很好的理由不起作用,但它是什么,我该如何解决这个问题?
答
在super(EIDEnvironment, self).__init__(...)
调用中,将kw
更改为**kw
。由于代码是当前编写的,因此您传递的是包含关键字args的字典,但并未实际将它们作为关键字参数传递。
答
我猜你需要解压千瓦否则你把它当作一本字典:
super(EIDEnvironment, self).__init__(
platform,
tools,
toolpath,
variables,
parse_flags,
**kw)
就像一个魅力!非常感谢。 – ereOn 2010-09-13 12:00:52