检查给定对象是否属于给定类型的最佳方法是什么?如何检查对象是否继承给定类型?
假设我有一个对象o.我如何检查它是否是一个str?
给定一个任意python对象,确定它是否是数字的最佳方法是什么?这里is定义为acts like a number in certain circumstances.
例如,假设您正在编写矢量类.如果给出另一个向量,您想要找到点积.如果给定标量,则需要缩放整个向量.
检查,如果事情是int,float,long,bool很烦人,不包括可能像数字用户定义的对象.但是,__mul__例如,检查是不够好的,因为我刚才描述的矢量类会定义__mul__,但它不是我想要的那种数字.
我遇到了问题isinstance().
我正在使用Python 2.7.8,并从shell运行脚本.
array我正在测试的元素包含一个数字,但是这个函数返回false; 使用number.Numbers:
import numbers
...
print array[x][i]
>> 1
...
print isinstance(array[x][i], numbers.Number)
>>> False
Run Code Online (Sandbox Code Playgroud)
也试过这个,从这篇文章
import types
...
print isinstance(array[x][i], (types.IntType, types.LongType, types.FloatType, types.ComplexType))
>>> False
Run Code Online (Sandbox Code Playgroud)
从同一篇文章中,我试过了
isinstance(array[x][i], (int, float, long, complex))
Run Code Online (Sandbox Code Playgroud)
我也试过这个解决方案没有用.
全部归还错误.
我有一个列表,其中一些也可以是函数.如果它是一个函数我想执行它.为此我做了类型检查.这通常适用于其他类型,如str,int或float.但是对于一个功能它似乎不起作用:
>>> def f():
... pass
...
>>> type(f)
<type 'function'>
>>> if type(f) == function: print 'It is a function!!'
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined
>>>
Run Code Online (Sandbox Code Playgroud)
有人知道如何检查功能类型吗?
确定Python对象是否为数字的最佳方法是什么?我正在使用以下测试
type(o) in [int, long, float, complex]
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有另一种方式.