在 CPython 中,您可以检查某物是否是,例如,a list
,使用isinstance(something, list)
。
但是,同样的代码在 Jython 中不起作用。在 Jython 中,它会引发此异常:TypeError: isinstance(): 2nd arg is not a class
.
在 CPython 中,您可以检查某物是否是,例如,a list
,使用isinstance(something, list)
。
但是,同样的代码在 Jython 中不起作用。在 Jython 中,它会引发此异常:TypeError: isinstance(): 2nd arg is not a class
.
在 Jython 中,list
是一个function
,而不是一个class
。你可以通过运行: 来找到它list.__class__
,它会打印<jclass org.python.core.BuiltinFunctions at ...>
出来,而 Python 会打印出<type 'list'>
相同的代码。
我找到了两种方法来完成这项工作。
isinstance(something, [].__class__)
.[].__class__
在 Jython 中运行,它将打印出<jclass org.python.core.PyList at ...>
. 所以你可以做import org
然后isinstance(something, org.python.core.PyList)
。这两个选项看起来都不是很好。第二个可能更容易理解,但缺点是只能在 Jython 上工作,而第一个在两个运行时上都一样好。