How to check type of object in Python?
我在变量v中有一些值,如何检查它的类型?
提示:不是v.dtype。
当我在调试器中执行EDOCX1[2]时,我得到
1
| type(v) = {type} <type 'h5py.h5r.Reference'> |
或
1
| type(v) = {type} <class 'h5py._hl.dataset.Dataset'> |
如何在运行时检查这些值?
"检查"是指计算布尔结果,说明是否给出了类型。
更新
在所谓的"重复"问题中,有人说,要比较一个类型应该使用
它隐式地假定类型是字符串。是吗?
- "支票"是什么意思?是否要打印类型名?是否要将该类型与某个已知类型进行比较?
- 我想下次和这种类型比较一下。
- R:"更新"。不,类型不是字符串,重复的答案也不意味着它们是字符串。
- 那么"str"是什么意思?直线运行?大步走?可能是斯特拉迪瓦里乌斯?
什么类型()的意思是:
我觉得你的问题比我原来想的要普遍一点。带一个参数的type()返回对象的type或class。因此,如果有a = 'abc'并使用type(a),则返回str,因为变量a是字符串。如果b = 10,type(b)返回int。
另请参见关于type()的python文档。
用于比较:
如果需要比较,可以使用:if type(v) == h5py.h5r.Reference(检查它是否是h5py.h5r.Reference实例)。
但建议使用if isinstance(v, h5py.h5r.Reference),然后子类也将对True进行评估。
如果要打印类,请使用print v.__class__.__name__。
更一般地说,如果两个实例具有相同的类,可以使用type(v) is type(other_v)或isinstance(v, other_v.__class__)进行比较。
- 对于"类"类型也是这样吗?
- 在"副本"答案中,据说与type(o) is str比较。这是否意味着类型是字符串?
- type(o)只返回o的类(类型)。我认为这大致相当于打电话给o.__class__。
- 我不知道用例是什么,但我认为应该使用isinstance(o, class_to_compare_o_with)或duck typing。
- @苏珊西奥:用type(o) is str检查对象o是否为str类型。如果您想检查它是否是整数,可以使用type(o) is int。
使用isinstance(v, type_name)或type(v) is type_name或type(v) == type_name,
其中type_name可以是以下类型之一:
- 没有
- 布尔
- int
- 浮动
- 复杂的
- STR
- 列表
- 元组
- 设置
- 双关语
当然,
- 应与isinstance进行类型比较。另请参见docs.python.org/2/library/functions.html?突出显示=类型类型