在Jython中出现

时间:2015-08-26 17:57:26

标签: list class jython isinstance

在CPython中,您可以使用list检查某些内容是否属于isinstance(something, list)

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

1 个答案:

答案 0 :(得分:3)

在Jython中,listfunction,而不是class。你可以通过运行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)
  3. 这两个选项看起来都不太好。第二个可能更容易理解,但缺点是只能使用Jython,而第一个在两个运行时都能很好地工作。