我们正在寻找这种类型的语句,但是在尝试时,它不起作用:
if type(item) == "<type 'oracle.sql.BLOB'>"
背景:我们正在从Jython中的JDBC连接接收回BLOB类型的对象。我们正在尝试检查返回的列的类型是否是类型,因此我们知道要解码二进制对象。
[我们还尝试了什么:对问题的其他答案显示了使用类名(即type(i)为int)作为测试的示例-但在这种情况下,如果我们使用这样的假定类名:
if type(item) == oracle.sql.BLOB:
我们收到此错误:
NameError:未定义名称'oracle'
此类型问题的多个其他答案提到使用isinstance()作为检查类型的首选方法-但我们看到的所有答案都显示了编码人员正在使用该类型的现有对象进行测试。
但是,在这种情况下,我们没有该oracle blob类型的对象。
我们如何测试对象类型?或者,我们如何创建该类型的对象,以便可以使用isinstance()?还是有其他方法?
您可以使用-获得对象的运行时类]
.getClass().getName()
您将需要执行以下操作:
if item.getClass().getName() == 'oracle.sql.BLOB': print "This is a BLOB."
示例代码:
import java.util.ArrayList as ArrayList arr = ArrayList() arr.add(10) arr.add(20) print arr print "Name:", arr.getClass().getName() print "Simple Name:", arr.getClass().getSimpleName() if arr.getClass().getName() == 'java.util.ArrayList': print "This is an ArrayList."
输出:
> jython check_type.py
[10, 20]
Name: java.util.ArrayList
Simple Name: ArrayList
This is an ArrayList.