Python:type(i)是int ...但我是int = False

时间:2016-05-23 23:11:26

标签: python numpy types

我很确定我做了一些愚蠢的事情,却无法弄清楚它是什么。

predict  = fn_abc(data)

In[3]: predict
Out[3]: array([2])
In[4]: type(predict)
Out[4]: numpy.ndarray

现在用int

包装我的fn_abc
predict  = int(fn_abc(data))

In[6]: predict
Out[6]: 2
In[7]: type(predict)
Out[7]: int
In[8]: predict is int
Out[8]: False

我做错了什么?

3 个答案:

答案 0 :(得分:4)

使用isinstance

isinstance(predict, int)

答案 1 :(得分:3)

predict is int检查整数是否与整数类型对象具有相同的标识。它不是。但是,该整数类型等于整数类型对象。检查整数类型是否等于整数类型对象。

>>> type(2) == int
True

您可以扩展此检查以使用内置函数isinstance()处理子类:

>>> isinstance(2, int)
True
>>> isinstance(True, int)
True

第二个测试检查True是否是整数的实例。由于boolint的子类,因此这是准确的。这对于用户定义的类很有用 - 如果你有一个带有Person子类的Customer类,isinstance()会告诉你一个Customer对象也是{{1} }}。但是,并非所有Person个对象都是Person个对象,因此它不是可交换的(如下所示Customer和整数):

bool

答案 2 :(得分:2)

type(predict) is int

预测是2; 是int 检查其他项目是类型' int' ,但 2 不是类型。

还有一种 isinstance 方法会更好。