如何在 Python 中检查对象的类型? [复制]
Posted
技术标签:
【中文标题】如何在 Python 中检查对象的类型? [复制]【英文标题】:How to check type of object in Python? [duplicate] 【发布时间】:2016-05-31 03:32:30 【问题描述】:我在变量v
中有一些值,如何检查它的类型?
提示:不是v.dtype
。
当我在调试器中执行type(v)
时,我得到了
type(v) = type <type 'h5py.h5r.Reference'>
或
type(v) = type <class 'h5py._hl.dataset.Dataset'>
如何在运行时检查这些值?
“检查”表示计算布尔结果,表示类型是否给定。
更新
在所谓的“重复”问题中,据说要比较类型一应该使用
type(v) is str
隐含地假设类型是字符串。是吗?
【问题讨论】:
“检查”是什么意思?要打印类型名称吗?您想将该类型与某个已知类型进行比较吗? 下次想和这种类型的比较一下。 回复:“更新”。不,类型不是字符串,重复的答案也不暗示它们是。 那么“str”可能意味着什么?直奔?大步?可能是斯特拉迪瓦里? 【参考方案1】:使用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?highlight=type#type【参考方案2】:
type() 是什么意思:
我认为您的问题比我最初想象的要笼统一些。带有一个参数的type()
返回对象的type
或class
。所以如果你有a = 'abc'
并使用type(a)
这将返回str
,因为变量a
是一个字符串。如果b = 10
,type(b)
返回int
。
另见python documentation on type()。
比较:
如果您想要比较,您可以使用: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
。
@SuzanCioc:使用type(o) is str
检查对象o
是否属于str
类型。如果你想检查它是否是一个整数,你可以使用type(o) is int
。以上是关于如何在 Python 中检查对象的类型? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何检查一个对象在 Python 中是不是可迭代? [复制]
如何在不创建 ViewModel 对象的情况下指定 DataContext (ViewModel) 类型以在 XAML 编辑器中进行设计时绑定检查? [复制]