【问题标题】:python, how to tell what type of obj was returnedpython,如何判断返回了什么类型的obj
【发布时间】:2010-10-06 04:49:11
【问题描述】:

如何确定 func 返回的 obj 是 int 还是其他东西(如 sqlite 光标)

【问题讨论】:

  • 你为什么需要知道这个?请提供一些您试图找出类型的上下文。也许是您想要编写的代码的概述。
  • 在 Python 中检查对象的类型肯定有正当的理由。当然,代码示例永远不会受到伤害。
  • @David - 类型检查通常是一个笨拙的错误,可以通过多态更好地解决。代码示例可以帮助提供更好的解决方案,完全避免类型检查。

标签: python types


【解决方案1】:

使用isinstance(item, type)——例如:

if isinstance(foo, int):
    pass # handle this case

但是,显式类型检查在 Python 世界中并不被认为是一种好的做法——这意味着鸭子类型的大部分功能都丢失了:应该允许像鸭子一样走路和嘎嘎叫的东西成为鸭子,即使如果不是! :)

【讨论】:

  • Python中称为isinstance()
  • 是的,我自己也发现了——在你回复的时候正在修复它。
【解决方案2】:

使用内置的“类型”功能,例如类型(10)->。

【讨论】:

  • 使用 type() 来检查相等性意味着子类的实例无法识别,因此通常不是正确的事情。
  • 嗯,通常是的。偶尔你仍然想要 type()... 很难在没有任何上下文的情况下调用。我不知道有任何 API 使用可能是 int 或 SQLite 游标的变体!
  • 是的,对,我认为这也指向 Charles 所说的,使用“type”或“isinstance”通常不被认为是好的做法。可能有一些有效的用途,但在实际使用它们之前,您可能需要再考虑一下您正在尝试做什么。
猜你喜欢
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2011-05-23
  • 2010-12-16
  • 2019-04-14
  • 1970-01-01
  • 2015-11-19
  • 1970-01-01
相关资源
最近更新 更多