2010-09-13 92 views
1

我想继承现有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个参数。我确信有一个很好的理由不起作用,但它是什么,我该如何解决这个问题?

回答

3

super(EIDEnvironment, self).__init__(...)调用中,将kw更改为**kw。由于代码是当前编写的,因此您传递的是包含关键字args的字典,但并未实际将它们作为关键字参数传递。

+0

就像一个魅力!非常感谢。 – ereOn 2010-09-13 12:00:52

1

我猜你需要解压千瓦否则你把它当作一本字典:

super(EIDEnvironment, self).__init__(
      platform, 
      tools, 
      toolpath, 
      variables, 
      parse_flags, 
      **kw)