python - 是否可以让 Python IDE 为动态生成的类属性提供自动完成功能?

标签 python autocomplete attributes

是否有任何技巧可以让 IDE 为动态生成的类属性提供代码完成?例如


class A:
    
    def __init__(self):
        setattr(self, "a", 5)

此代码将设置 A 的类属性调用a5 的值.但是 IDE 不知道 a因此你没有得到它的代码完成。我有 read that __dir__方法可以上钩,但该答案中提出的建议对我不起作用。有人有什么想法吗?

最佳答案

相信你会找到答案here .简而言之,Pycharm 目前不(并且可能在可观察的将来也不会)支持动态属性。那是因为它静态地分析代码,并且不能“看到”一个类可能有什么属性。另一方面,当你在(比如)iPython 中运行代码时,一旦创建了此类的实例,编辑器就可以获取驻留在内存中的特定实例的属性,从而在自动完成中显示它们。在这种情况下 __dir__有帮助。我认为其他 IDE 也是如此。
所以如果你真的需要自动补全功能,你可能想尝试使用 Jupyter notebook。不过,您必须在自动完成之前实例化您的变量。
另一种可能的解决方案是利用 IDE 支持 .pyi文件(Python 接口(interface)文件 stub )。您可以在代码中添加一个小片段,用动态属性实例化类,并记下类接口(interface)文件 (.pyi)。然后 IDE 将使用它进行自动完成。显然,这个解决方案会有“一次运行延迟”,但就像在 PyCharm 中一样,您只需单击类名附近的星号即可切换到此类文件,当有大量更改时,您可以手动更新它。

关于python - 是否可以让 Python IDE 为动态生成的类属性提供自动完成功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63436496/

相关文章:

python - 在python程序中设置外部输入

javascript - jQuery 自动完成添加图像

javascript - 如何使用滚动加载自动完成数据

c++ - C++/STL 中是否支持按属性对对象进行排序?

jquery - 选择值列表中具有属性值的元素

python - 上传前在本地进行一些处理

python - 将函数的结果写入 csv 中

php - 媒体维基 1.16.4 : Script to upload multiple image files

php - jQuery 自动完成 - 当从列表中选择一个项目时,将其存储在 php 变量中

class - 使用 class 属性而不是 JSF 组件的 styleClass 确实有效,为什么?