使用 PyDev 运行 Eclipse (Galileo)。我正在尝试使用模块 urllib2,并且我刚刚开始尝试使用它。我正在学习的其中一个教程说要在我的 urllib2.urlopen() 类上调用 geturl() 。所以我做到了,它按预期工作。
但是,当我尝试使用 Eclipse 便捷的“ctrl+space”快捷方式浏览类方法时,我感到很惊讶,它只为我提供了我认为是基类的私有(private)方法:
当我执行 dir(page)
时,我得到了各种我可以使用的巧妙方法!
['__doc__', '__init__', '__iter__', '__module__', '__repr__', 'close', 'code', 'fileno', 'fp', 'getcode', 'geturl', 'headers', 'info', 'msg', 'next', 'read', 'readline', 'readlines', 'url']
这是 Eclipse 问题吗?还是用户错误?如果我把它放在 IDLE 中,我可以使用 IDLE 的自动完成功能来查看可用的方法,但我无法获得与 PyDev 一起使用的相同功能;我相信它可以在我的工作电脑上运行,但我的家用电脑(我现在使用的电脑)似乎“不正常”。
我已在 Google/Stackoverflow 上尽我所能,但我不确定哪些关键字会返回可能有助于我了解这里出了什么问题的结果。如果您能提供任何见解,那就太好了!
(Python 2.6,在 Debian (#!) 虚拟环境中运行,windows7 主机 - 如果有任何问题)
注意:我只是在 Debian 端开发,所以我没有在 Win7 上安装 eclipse。
更新 1:
要回答“如果我向下滚动,浏览器会以什么结尾?”它以 subclasshook 结尾。查看下面的照片,了解列表底部的样子(都是私有(private)的,没有方法)。
更新 2:
正如之前的帖子所建议的那样,我进入了首选项菜单并检查了自动完成选项卡和解释器首选项选项卡,似乎没有什么不合适的地方(但话又说回来,在阅读了 pydev 自动完成文档之后,我没有看到任何东西关于“防火墙”或任何表明存在防火墙的迹象。
不过,我又做了一个测试,见下图:
wx
的自动完成功能工作得很好。也许我误解了以前的帖子中告诉我的内容,但是,我理解我看到我的 page
类的魔术方法的原因是因为 PyDev 不知道还有什么可以填充它- 所以它显然很困惑。我只是不确定从这里去哪里。我会继续阅读 PyDev 文档,看看我是否能同时弄清楚。
而且,我差点忘了 - 当我将鼠标“悬停”在代码中的 urllib2.urlopen() 上时,它确实向我显示了文档字符串。不确定这是否提供了关于这个假定的损坏功能的任何见解。
更新 3:
根据某人关于“强制内置”仅在 PyDev 中自动完成的评论,我将“urllib2”添加到首选项下的强制内置。下面是我得到的图像...
我有一些新方法...但不是我预期的方法(即当我调用 dir(page)
时,我没有看到从 __dict__
得到的方法) ,特别是 geturl())。
最佳答案
其中大部分是 Python 的“魔术方法”:
http://www.rafekettler.com/magicmethods.html
它们是您可以在任何对象上定义以赋予其自定义行为的特殊方法。大多数 Python IDE 都知道不显示它们,但 Eclipse 尤其有用。
关于python - PyDev/Eclipse/Python 没有显示一个类的所有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755535/