- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一种使用 Python 编写 CraftBukkit(Minecraft 修改服务器软件)脚本的方法。
我通过使用 Jython 加载 Python 脚本,然后使用事件装饰器等来实现此目的。
我目前正在实现事件装饰器,但有一个问题:没有参数的装饰器工作正常,但一旦我添加参数,它就开始提示没有足够的参数。
这有效:
@script.event
def test(event):
print "hi" # Works
public void event(PyFunction func) {
return func;
}
这不会:
@script.event("player.PlayerMoveEvent", "normal")
def test(event):
print "player moved!" # TypeError: event(): 1st arg can't be coerced to org.python.core.PyFunction
public void event(PyFunction func, PyString eventType, PyString priority) {
// Do all kinds of crap
return func;
}
这是我的 Java 代码: http://pastebin.com/GsULYdJr
最佳答案
这与 Jython 无关。等效的纯 Python 代码显示了实际问题(为了简单起见,我省略了类或命名空间 script
):
def event(func, event_type, priority):
# ...
return func
@event("player.PlayerMoveEvent", "normal")
def test(event):
print "player moved"
错误是
Traceback (most recent call last):
...
TypeError: event() missing 1 required positional argument: priority
这是由于对装饰器的误解造成的。您期望装饰函数定义像这样执行
def test(event):
print "player moved"
test = event(test, "player.PlayerMoveEvent", "normal")
但它是这样执行的:
__decorator = event("player.PlayerMoveEvent", "normal")
def test(event):
print "player moved"
test = __decorator(test)
@
后面的部分是单独计算的,that 的结果是用 test
函数作为参数调用的。 Python 中的正常修复方法是使用闭包,但这在 Java 中可能很麻烦。最简单的方法可能是用 Python 编写部分装饰器并保留当前的 Java 代码:
def script(event_type, priority):
def decorate(func):
return script.event(func, event_type, priority)
return decorate
关于java - Jython 装饰器 : 1st arg can't be coerced to org. python.core.PyFunction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19346110/
考虑以下 GHCi session : >:set -XTypeApplications >import Data.Map.Strict >import GHC.Exts >newtype MySet
我有一个类型 Id a我试图防止意外强制,例如 Id Double到 Id Int . 如果我正确理解类型角色,则以下内容不应编译。 {-# LANGUAGE RoleAnnotations #-}
在inline-c包中,有一个example从 Haskell 调用 C 库 GNU Scientific Library gsl。 solveOde fun x0 f0 xend = coerc
在inline-c包中,有一个example从 Haskell 调用 C 库 GNU Scientific Library gsl。 solveOde fun x0 f0 xend = coerc
我相信以下内容与 Set.mapMonotonic coerce 一样安全.即可能发生的最坏情况是我将打破 Set不变量 a或 b有不同的Ord实例: coerceSet :: Coercible a
我有一个 Django 项目,其中包含两个功能性应用程序。今天,在添加两个新模型后,我意识到我的一个应用程序坏了。当我尝试向任何模型添加实例时,我收到与数据类型相关的错误。当我尝试在应用程序中创建任何
func downloadCurrentWeather(completed: @escaping DownloadComplete){ Alamofire.request(API_URL).r
我尝试直接对解释执行此操作: (setf example (coerce "blablabla" 'list)) 并且工作正常。事实上 (car example) 返回 #\b 但如果我尝试这样做:
我收到TypeError: coercing to Unicode: need string or buffer, int found 这是我的模型.py: class FollowingModel(
Python 内置的 coerce 函数有哪些常见用途?如果我不知道数值 as per the documentation 的 type,我可以看到应用它,但是否存在其他常见用法?我猜想在执行算术计算
考虑这种类型: data Vec3 = Vec3 {_x, _y, _z :: Int} 我有一些函数都采用相同的输入,并且可能无法计算字段: data Input getX, getY, getZ
我对 R 的理解正在不断进步,但在投资组合优化方面我遇到了另一个障碍。我有一个程序可以生成 Assets 组合的 .csv 文件。第一个是投资组合的方差/协方差矩阵:covar.csv,第二个是 As
我有以下 Haskell 代码,可以完美编译: import Control.Monad.Reader (Reader (..)) import Data.Coerce (Coercible, coe
我目前正在自学 Swift 编程,但遇到了一条我不知道如何摆脱的错误消息。错误消息如下: warning: expression implicitly coerced from 'String?' t
这个问题已经有答案了: coerce() equivalent in python 3 (2 个回答) What is Python's coerce() used for? (2 个回答) 已关闭
coerce() 函数 returns a tuple consisting of the two numeric arguments converted to a common type, usin
我有以下函数来为给定用户汇总我的 Pack 模型中 :amount 字段的所有记录: 用户.rb def total_money_spent_cents amount = self.pac
在我的程序中,我收到一条错误消息,显示 ./ruby_camping.rb:91:in `-': nil can't be coerced into Fixnum (TypeError)。我想做的是为
据说当我们有一个类 Point 并且知道如何执行 point * 3 时,如下所示: class Point def initialize(x,y) @x, @y = x, y end
我正在尝试获取lambda值,我发现了以下问题:R glmnet : "(list) object cannot be coerced to type 'double' " 但是无法弄清楚如何使其适用
我是一名优秀的程序员,十分优秀!