2013-04-15 80 views
3

我試圖從另一個.py初始化類(extraropt),但它給了我一個錯誤,我已經搜索,但我還沒有找到解決方案。錯誤 - __init __()只需要2個參數(1給出)

繼承人的一個PY我從調用的代碼:

main.py:

class GameWindow(ui.ScriptWindow): 
    def __init__(self, stream): 
     import extraop 

     exec 'extraop.extraropt().Show(stream)' 

而這裏的一個PY我想調用的代碼(INIT和德爾只):

extraop.py

class extraropt(ui.Window): 
    def __init__(self, stream): 
     ui.Window.__init__(self) 
     self.BuildWindow() 
     self.stream=stream 
    def __del__(self): 
     ui.Window.__del__(self) 

它給出了這樣的錯誤:

Error - __init__() takes exactly 2 arguments (1 given) 
+2

嗨,歡迎光臨。你在哪一行得到錯誤? – theAlse

+0

歡迎來到Stack Overflow Miguel!您可能想閱讀關於如何發佈一個好問題的常見問題解答。我們喜歡剪掉這些喋喋不休的行爲,並且直截了當地進行編輯。此外,如果發佈一個完整的,最小的工作示例(包括完整的錯誤追溯),那麼我們可以更好地幫助您。 – Hooked

+0

其固定的,它在extraop.py的__init__上。行2. –

回答

5

在線路

exec 'extraop.extraropt().Show(stream)' 

通過創建extraopt的新實例,隱式調用extraropt.__init__()。在代碼中,你表明extraropt.__init__()需要一秒鐘(stream)的說法,所以你必須傳遞英寸

extraop.extraropt(stream).Show() 

順便說一句,沒有理由你應該做的exec,而不是顯式調用它我在上面做了。您也沒有理由定義__del__()方法,因爲您只需調用父方法__del__()方法。

+0

非常感謝! 它只是工作得很好! –

4

需要初始化父這樣說:

super(extraropt, self).__init__(stream) 
+0

沒有這樣做,但喬爾Cornett讓我想要的。 無論如何,謝謝。 –

3

在該行exec 'extraop.extraropt().Show(stream)'stream變量應該傳遞到extraropt類的構造函數,這樣:

exec 'extraop.extraropt(stream).Show()' 
+0

感謝您的幫助。 –

相關問題