我很确定我在做一些愚蠢的事情,但无法弄清楚它是什么。
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
我做错了什么?
Use isinstance.
isinstance(predict, int)
predict is int
检查整数是否与整数类型对象具有相同的标识。它没有。但是,该整数的类型等于整数类型对象。检查整数的类型是否等于整数类型对象。
>>> type(2) == int
True
您可以扩展此检查以使用内置函数isinstance()
处理子类:
>>> isinstance(2, int)
True
>>> isinstance(True, int)
True
第二个测试检查True
是否是整数的实例。因为bool
是int
的一个子类,这是准确的。这对于用户定义的类很有用 - 如果你有一个Person
类,有一个Customer
子类,isinstance()
会告诉你Customer
对象也是一个Person
。但是,并非所有Person
对象都是Customer
对象,因此它不是可交换的(如下所示,带有 bool
和整数):
>>> isinstance(2, bool)
False
type(predict) is int
预测为 2;is int 检查其他项是否为类型"int",但 2 不是类型。
还有一个 isinstance 方法会更好。