为何代码中无法判定对象为Spotfire DateTime类型?
问题:Spotfire DateTime类型判断不生效的原因?
我有一个变量v,执行以下代码:
print type(v)
得到的结果是:
<type 'DateTime'>
但执行以下判断时:
if type(v) in (datetime, datetime.date, datetime.datetime, datetime.time):
结果却为假。这是为什么?
编辑说明:此处的DateTime类型是Spotfire专属类型。
解答
这事儿其实很好理解——你碰到的是Spotfire专属的DateTime类型,和Python标准库datetime模块里的那些类完全不是一回事儿!
- 你打印
type(v)得到的<type 'DateTime'>,是Spotfire自身API定义的Spotfire.Dxp.Data.DataType.DateTime类型,属于Spotfire的数据体系范畴,和Python原生的datetime家族没有半毛钱关系。 - 而你判断条件里的
datetime、datetime.date、datetime.datetime这些,全都是Python标准库datetime模块下的类,两者根本不是同一个“对象”,所以type(v)自然不在你指定的元组里,判断结果也就成了False。
如果要正确判断这个Spotfire专属的DateTime类型,你得用Spotfire API里的对应类型来检查,示例代码如下:
from Spotfire.Dxp.Data import DataType if type(v) is DataType.DateTime: # 这里写你的处理逻辑 pass
内容的提问来源于stack exchange,提问作者Jacek Sierajewski
相关产品推荐
相关产品推荐

