如何在Jython中扩展java TimerTask并向其传递参数?

如何在Jython中扩展java TimerTask并向其传递参数?,java,jython,timertask,jython-2.5,Java,Jython,Timertask,Jython 2.5,我试图在Jython中扩展一个TimerTask,从一些传感器读取数据,然后每隔一秒钟通过网络发送数据。为此,我需要将读卡器和服务器对象(以及一些事件对象)传递给TimerTask对象。当我尝试通过Timer.schedule方法执行此操作时,会出现以下错误: File "C:\Documents\src\iButtonHandler.py", line 61, in run TypeError: org.python.proxies.iButtonHandler$IButtonTimerTas

我试图在Jython中扩展一个
TimerTask
,从一些传感器读取数据,然后每隔一秒钟通过网络发送数据。为此,我需要将读卡器和服务器对象(以及一些事件对象)传递给
TimerTask
对象。当我尝试通过
Timer.schedule
方法执行此操作时,会出现以下错误:

File "C:\Documents\src\iButtonHandler.py", line 61, in run
TypeError: org.python.proxies.iButtonHandler$IButtonTimerTask$1(): expected 0 args; got 4
我推测
Timer.schedule
方法调用
TimerTaskObject
的run方法,但是为什么它不首先调用
\uuuuu init\uuu
?我还尝试将参数添加到我的
TimerTask
run
方法中,但我得到了同样的结果

这是我的密码:

class IButtonTimerTask(TimerTask):

    def init(self, reader, server, enterPressed, runComplete):
        self.__reader = reader
        self.__server = server
        self.__enterPressed = enterPressed
        self.__runComplete = runComplete

    def run(self):
        iButtonData = self.__reader.getAllValues()
        self.__server.sendData(iButtonData):
        if self.__enterPressed.isSet():
            self.cancel()
            self.__runComplete.set()

class IButtonHandler(threading.Thread):

    def __init__(self, port, container, enterPressedEvent, exitEvent):

        threading.Thread.__init__(self, name='iButton Handler Thread')
        print 'creating ibutton thread'
        self.__container = container
        self.__reader = IButtonContainerReader(self.__container)
        self.__containerId = self.__reader.getID()
        self.__server = MyServer(port, name=self.__containerId)
        self.__enterPressed = enterPressedEvent
        self.__exitEvent = exitEvent
        self.__runComplete = threading.Event()
        self.start()


    def run(self):
        print 'ibutton thread running'
        if self.__server.listen():
            timer = Timer()
            timer.schedule(IButtonTimerTask(self.__reader, self.__server, self.__enterPressed, self.__runComplete), 0, 1000)

        self.__runComplete.wait()
            print 'iButton handler %s exiting' %self.__containerId
            timer.cancel()
            self.shutDown()
            return
我看到在纯Java中,您只需扩展
TimerTask
并在
Timer.schedule
方法中调用
newmytimertask(…)
。在Jython,我似乎不能让它那样运作。我做错了什么


谢谢你看这个

您的
init
应被称为
\uuuu init\uuuu

class IButtonTimerTask(TimerTask):

    def __init__(self, reader, server, enterPressed, runComplete):
        ^^    ^^

我还想,也许我可以创建TimerTask作为IButtonHandler的内部类,以便访问IButtonHandler的变量。我认为“自我”会引起问题,但我不确定jython的内部课程是如何运作的。我很想给你投票,但我没有足够的声誉这么做。我犯这种错误可能赚不到钱。。。