【问题标题】:How to find the real type of an object in Python如何在 Python 中找到对象的真实类型
【发布时间】:2016-06-18 02:53:03
【问题描述】:

如何在 Python 中找到方法的真正返回类型?

例如,我想在 Pycharm 中启用类型提示,以便自动完成工作,但令人惊讶的是,即使在调试器中,甚至在查看方法主体之后,也不容易找到确切的对象类型。

我希望 type(someObject) 返回对对象有意义的东西,但对于大多数对象,它返回 <type 'instance'>,这几乎没有任何用处。

例如,我如何找出调用urllib2.urlopen(url) 返回的响应对象的类型,以便我可以使用Pycharm type hint 标记局部变量以使自动完成工作?

我意识到 Python 中的一切都是动态的,对接口进行编程并不是广泛使用的 Python 范式,但至少我想知道在类型推断方面我们能走多远,特别是对于舒适的 IDE 支持和带有自动完成功能的“懒惰”编程。

【问题讨论】:

  • 你不能,因为同一函数中的多个return 语句可能会返回不同的类型,因为 Python 不是静态类型的。
  • 从我从另一个列为重复的问题中收集到的信息,obj.__class__ 似乎应该显示正确的对象类,它可以用作 IDE 的类型提示。至少它适用于urllib2.urlopen(url),它转换为""":type : urllib.addinfourl """(在Python 2.7 中)的类型提示,这使得自动完成在pycharm 中工作。

标签: python pycharm


【解决方案1】:

老风格类的实例的真实类型是instance,不管它有没有用。如果你想知道它是一个实例的类,你可以使用obj.__class__。但旧式类不是类型。

而且python中没有“方法的返回类型”这样的东西。

【讨论】:

  • "不管它有没有用" 好吧,python 开发者想出了新的样式类是有原因的......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 2013-12-08
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多