2016-05-11 34 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之间的对象遗产有问题? –