今天在使用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
哈哈,这样就成功了!