是否有任何技巧可以让 IDE 为动态生成的类属性提供代码完成?例如
class A:
def __init__(self):
setattr(self, "a", 5)
此代码将设置 A
的类属性调用a
为 5
的值.但是 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/