How to find the real type of an object in Python
如何在python中找到方法的实际返回类型?
例如,我想在pycharm中启用类型暗示,这样自动完成就可以工作了,但是即使在调试器中,甚至在查看方法体之后,也很难找到确切的对象类型。
我期望type(someObject)返回对对象有意义的东西,但对于大多数对象,它返回,这几乎没有任何用处。
例如,如何找出调用urllib2.urlopen(url)返回的响应对象的类型,以便使用pycharm类型提示标记局部变量以使自动完成工作?
我认识到在Python中,一切都是动态的,接口编程并不是一种广泛使用的Python范式,但至少我想知道在类型推断方面我们可以走多远,特别是对于舒适的IDE支持和"懒惰"的自动完成编程。
- "type(myfield)"返回""而不是""的原因可能重复?
- 不能,因为同一函数中的多个return语句可能返回不同的类型,因为python不是静态类型。
- 从我从另一个列为副本的问题中收集到的信息来看,obj.__class__应该显示正确的对象类,该类可以用作IDE的类型提示。至少它适用于urllib2.urlopen(url),它转换为""":type : urllib.addinfourl"""的类型提示(在python 2.7中),这使得自动完成在pycharm中起作用。
旧样式类实例的实际类型是instance,不管它是否有任何用途。如果你想知道这个类,它是你的一个实例,你可以使用obj.__class__。但是旧样式类不是类型。
在Python中没有类似于"方法的返回类型"的东西。
- "不管它是否有任何用途",好吧,python devs开发出新的样式类是有原因的…