2

在 CPython 中,您可以检查某物是否是,例如,a list,使用isinstance(something, list)

但是,同样的代码在 Jython 中不起作用。在 Jython 中,它会引发此异常:TypeError: isinstance(): 2nd arg is not a class.

4

1 回答 1

4

在 Jython 中,list是一个function,而不是一个class。你可以通过运行: 来找到它list.__class__,它会打印<jclass org.python.core.BuiltinFunctions at ...>出来,而 Python 会打印出<type 'list'>相同的代码。

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

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

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

于 2015-08-26T17:57:26.440 回答