我正在构建一种用Python编写CraftBukkit(Minecraft moded服务器软件)的方法。在
我用Jython加载一个Python脚本,然后使用事件的装饰器,等等
我目前正在实现事件装饰器,但是我有一个问题:没有参数的装饰器工作正常,但是只要我添加一个参数,它就会开始抱怨没有足够的参数。在
这是有效的:
@script.event
def test(event):
print "hi" # Works
public void event(PyFunction func) {
return func;
}
这不会:
^{pr2}$以下是我的Java代码: http://pastebin.com/GsULYdJr
这和Jython无关。等效的纯Python代码显示了实际问题(为了简单起见,我省略了类或名称空间
script
):错误是
^{pr2}$这是因为对装修师的误解。您希望装饰函数定义像这样执行
但它是这样执行的:
对
@
后面的部分进行隔离计算,的结果被调用时使用test
函数作为参数。Python中通常的修复方法是使用闭包,但在Java中这可能很麻烦。用Python编写decorator的一部分并保持Java代码不变可能是最简单的方法:相关问题 更多 >
编程相关推荐