PyCharm自动完成失败,因此显示所有选项

时间:2018-10-01 22:00:59

标签: python pycharm

我最近进入python并开始使用PyCharm,主要用于代码完成功能,因为它可以帮助我熟悉新的软件包和库。

在使用discord.py时,我发现自动完成功能并未显示所有可能的选项。

为示例,此代码有效并且可以执行:

Example 1

但是,如果我尝试使用自动完成功能来填写第11行,则不会提供用户名或名称。

示例2 Example 2

示例3 Example 3

奇怪的是,自动完成功能确实可以在程序包的很大一部分上起作用,如下所示:

Example 4

我已经努力了很长时间,试图弄清为什么会这样。我已确保使用正确的解释器(discord.py显示在已安装的软件包中),并且已在“设置”的Python调试器下启用了“收集运行时类型信息以进行代码分析”,因为我已经读到帮助。

感谢您对此有任何见识。

1 个答案:

答案 0 :(得分:0)

discord.Client使用__getattr__动态处理user属性的属性查找。 __getattr__与PyCharm用于自动完成的静态分析根本不兼容。

我可能只是和PyCharm一起生活而无法找到该属性。如果您仍要对此做某事,编写type stubs可能会有所帮助(或者它们可能与实现不同步并导致更多问题),或者您可以看到discord.py是否会接受使用的拉取请求属性而不是__getattr__ / __setattr__进行属性转发。