Jython 中的实例

isinstance in Jython

在 CPython 中,您可以使用 isinstance(something, list).

检查某物是否为 list

不过,同样的代码在 Jython 中不起作用。在 Jython 中,它抛出这个异常:TypeError: isinstance(): 2nd arg is not a class.

在 Jython 中,listfunction,而不是 class。您可以通过 运行ning 找到这一点:list.__class__,它将打印 <jclass org.python.core.BuiltinFunctions at ...>,而 Python 将打印出 <type 'list'>,给定相同的代码。

我找到了两种方法来完成这项工作。

  1. 使用isinstance(something, [].__class__).
  2. 如果您在 Jython 中 运行 [].__class__,它将打印出 <jclass org.python.core.PyList at ...>。所以你可以做 import org 然后 isinstance(something, org.python.core.PyList).

这两个选项看起来都不是很好。第二个可能更容易理解,但缺点是只能在 Jython 上工作,而第一个在 运行 次上都同样好用。