Wing IDE不会在自动填充气泡中显示所有方法

时间:2014-07-22 11:44:45

标签: python wing-ide

我喜欢Wing IDE。但是我在自动完成方面遇到了一些问题。例如,当我尝试编写此代码段时:

import socket

s = socket.socket()
s.connect(("rutracker.org",80))
s.send('GET / HTTP/1.0\n\n')
answer = s.recv(1024)

Wing帮我和自动填充socket.socket()。但是当我输入send时,它找不到像recvs.这样的方法:

First Second

我做错了吗?

1 个答案:

答案 0 :(得分:0)

这是因为socket.py中的SocketType或_socketobject是在运行时部分动态组合的,我们的静态分析引擎无法解释该代码(它位于Python 2.7.6中的socket.py的第226行,它在_socketmethods上进行迭代向_socketobject添加方法;位置可能因精确的Python版本而异,但它可能只是在所有这些的_socketobject的常规类def之后。)

解决这个问题的一种方法是在s = socket.socket()之后设置一个断点并运行它,然后auto-completer使用实时运行时状态,这样完整的内容就在那里。像这样工作还有一个好处,就是你可以在Wing IDE Pro的Debug Probe(一个在当前调试堆栈框架中运行的Python shell)中立即试用代码。

我还将看看我们是否可以针对静态分析案例进行改进。对于某些事情,我们确实有手动覆盖,这种情况似乎应该添加。