我最近进入python并开始使用PyCharm,主要用于代码完成功能,因为它可以帮助我熟悉新的软件包和库。
在使用discord.py时,我发现自动完成功能并未显示所有可能的选项。
为示例,此代码有效并且可以执行:
但是,如果我尝试使用自动完成功能来填写第11行,则不会提供用户名或名称。
示例2
示例3
奇怪的是,自动完成功能确实可以在程序包的很大一部分上起作用,如下所示:
我已经努力了很长时间,试图弄清为什么会这样。我已确保使用正确的解释器(discord.py显示在已安装的软件包中),并且已在“设置”的Python调试器下启用了“收集运行时类型信息以进行代码分析”,因为我已经读到帮助。
感谢您对此有任何见识。
答案 0 :(得分:0)
discord.Client
使用__getattr__
动态处理user
属性的属性查找。 __getattr__
与PyCharm用于自动完成的静态分析根本不兼容。
我可能只是和PyCharm一起生活而无法找到该属性。如果您仍要对此做某事,编写type stubs可能会有所帮助(或者它们可能与实现不同步并导致更多问题),或者您可以看到discord.py是否会接受使用的拉取请求属性而不是__getattr__
/ __setattr__
进行属性转发。