2010-09-13 122 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)