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