【发布时间】: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 中工作。