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