How can one reliably determine if an object has a numpy type?
I realize that this question goes against the philosophy of duck typing, but idea is to make sure a function (which uses scipy and numpy) never returns a numpy type unless it is called with a numpy type. This comes up in the solution to another question, but I think the general problem of determining if an object has a numpy type is far enough away from that original question that they should be separated.
解决方案
Use the builtin type function to get the type, then you can use the __module__ property to find out where it was defined:
>>> import numpy as np
a = np.array([1, 2, 3])
>>> type(a)
>>> type(a).__module__
'numpy'
>>> type(a).__module__ == np.__name__
True