【问题标题】:How to check type of object in Python? [duplicate]如何在 Python 中检查对象的类型? [复制]
【发布时间】: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”可能意味着什么?直奔?大步?可能是斯特拉迪瓦里?

标签: python


【解决方案1】:

使用isinstance(v, type_name)type(v) is type_nametype(v) == type_name

其中 type_name 可以是以下之一:

  • 布尔
  • int
  • 浮动
  • 复杂
  • str
  • 列表
  • 元组
  • 设置
  • 字典

当然还有

  • 自定义类型(类)

【讨论】:

【解决方案2】:

type() 是什么意思:

我认为您的问题比我最初想象的要笼统一些。带有一个参数的type() 返回对象的typeclass。所以如果你有a = 'abc' 并使用type(a) 这将返回str,因为变量a 是一个字符串。如果b = 10type(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
猜你喜欢
  • 2012-01-12
  • 1970-01-01
  • 2014-07-25
  • 2016-02-19
  • 1970-01-01
  • 2020-04-27
  • 2021-11-08
  • 2011-01-27
相关资源
最近更新 更多