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