为什么 SimpleNamespace 代码补全在 pycharm 编辑器中不起作用?
from types import SimpleNamespace
sn= SimpleNamespace(param_a = '1')
sn. # pressing '.' dot I'm NOT offered param_a
这在 pycharm python 控制台中确实有效,表明 SimpleNamespace 实例必须首先在运行时以某种方式“计算”。但是,如果 SimpleNamespace 的目的是提供名称空间,对一些参数进行分组并通过点表示法访问它们,然后,虽然从技术上讲我仍然可以手动输入 sn.param_a ,但如果没有代码完成,整个事情就会剥夺其大部分用处,我可能会切换到普通类,其中代码完成确实可以在编辑器中工作(类实例化与否)在不同的机器\pycharm版本上尝试过,所以看起来不像我的环境的一些怪癖。
为什么 SimpleNamespace 代码补全在 pycharm 编辑器中不起作用?
因为 PyCharm 没有足够的智能来专门处理 SimpleNamespaces(即知道 kwargs 只是分配给实例属性)。
这在 pycharm python 控制台中确实有效,表明 SimpleNamespace 实例必须首先在运行时以某种方式“计算”
是的,控制台会执行类似的操作vars()
or dir()
在活动对象上进行内省。静态代码分析与运行时检查对象完全不同。
该实例在运行时不会以任何特殊方式“计算”。
我可能会切换到普通类,其中代码完成可以在编辑器中工作(类实例化与否)
您可能想使用dataclasses
(or attrs
) 为简洁起见;两者都得到 PyCharm 的良好支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)