今天在使用jython的时候发现了一个这样的错误,可能我对python不熟悉的缘故!
python代码是这样的:
import sys from test import Handle from test import ITask class Task(ITask): def work(): i=10000000 while (i>0): i=i-1
ITask.java:
public interface ITask { public void work(); }
看上去好像没有什么问题,就是实现接口方法.结果调用的时候出现了这个错误信息:
TypeError: work() too many arguments; expected 0 got 1
搞了半天都不清楚是怎么回事,只好在网上搜索了!后来终于找到一篇文章:
http://aspn.activestate.com/ASPN/Mail/Message/Jython-users/2236297
其中有这样的语句话:
Member functions should always have at least one argument - self. If you omit the 'self' argument that will cause the error you are getting.
大概意思是说函授的参数列表中必须有一个参数--self,如果省略了就会报错!
然后我修改了下代码:
class Task(ITask): def work(self):#就是在这里添加 i=10000000 while (i>0): i=i-1
哈哈,这样就成功了!