2016-05-11 41 views
-1

我有一個簡單的代碼問題,不知道我做錯了什麼。導入部分是好的,當我得到一個錯誤消息時,我想我犯了一個錯誤的類。Python 3.5代碼 - 類未正確定義

status_listener = SessionStatusListener() 
TypeError: interface takes exactly one argument 

因此,代碼爲:

import clr 

clr.AddReference ("fxcore2") 
from fxcore2 import O2GTransport, IO2GSessionStatus 

class SessionStatusListener(IO2GSessionStatus): 

    def __init__(self): 
     IO2GSessionStatus.__init__(self) 
     self.connected = False 

    def onLoginFailed(self, error): 
     print ("*** LOGIN FAILED: %s" % error) 

    def onSessionStatusChanged(self, status): 
     print ("NEW STATUS: %s" % status) 
     if status == O2GSessionStatusCode.Connected: 
      self.connected = True 

主要應用在這裏開始

if __name__ == "__main__": 

    session = O2GTransport.createSession() 
    status_listener = SessionStatusListener() 

任何建議表示讚賞。

+0

您的代碼中沒有任何內容可能會產生該錯誤消息; 'IO2GSessionStatus .__ init__'對參數有什麼期望? – chepner

+0

您可能需要將'session'傳遞給'SessionStatusListener'(並將它傳遞給'IO2GSessionStatus')。 – Evert

回答

0

將參數傳遞給SessionStatusListener,就像它告訴你的一樣。我可以想象,你需要將__init__體更改爲類似

super().__init__(self) 

,而不是

IO2GSessionStatus.__init__(self) 
+0

爲什麼'super'會改變什麼?此外,對「超級」的調用將作爲隱式和顯式參數傳遞實例。 –

0

我相信這是說,

status_listener = SessionStatusListener() 

需要一個參數,就像這樣:

status_listener = SessionStatusListener(1) 

我不確定它所期望的數據類型,但你需要傳遞一個參數。

+0

是否可能是2.7至3.5之間的對象遺產有問題? –