python - PyDev:模块的@DynamicAttrs

标签 python aptana pydev code-analysis

在我正在编写的程序中,我创建了一个名为 settings 的模块,它声明了一些常量,但从配置文件中加载了其他常量,将它们放置在模块命名空间中(例如:π 的值可能在模块的代码中,但用户在配置文件中的权重)。

在其他模块中,我可以这样做:

from settings import *

对我来说一切正常,但是 - 使用 Aptana Studio/PyDev,代码分析工具会抛出很多 undefined variable 错误,如下所示:

enter image description here

我找到了 here在类文档字符串中有一个标志可用于防止这种行为,但如果我尝试在模块级别使用它,它就没有效果。所以我想知道两件事:

  • 有没有办法有选择地消除这些错误(这意味着我不想完全关闭选项“将 undefined variable 标记为错误”:在其他模块中它实际上可能是一个错误)?

  • 如果不是,是否有替代模式来实现我想要的在野外导入方面,但又不会混淆代码分析工具?

先发制人:我完全清楚不鼓励野生进口这一事实。

最佳答案

实际上,即使不是随意导入,您也可能会遇到相同的错误(即:导入设置/settings.MY_VARIABLE 仍会显示错误,因为代码分析无法找到它)。

除了每个引用它的地方的@UndefinedVariable(CTRL+1 将显示该选项),我认为更好的您的模块的模式将是:

MY_VARIABLE = 'default value'
...

update_default_values() # Go on and override the defaults.

这样,代码分析(以及任何阅读您的模块的人)就会知道哪些变量是预期的。

否则,如果您以前不知道它们,我认为更好的方法是使用方法(即:get_settings('MY_VARIABLE'))。

与实际问题无关。我真的建议不要在这里使用随意导入(甚至不要导入常量...即:from settings import MY_VARIABLE)。

设置模块的更好方法是始终使用:

import settings
settings.MY_VARIABLE 

(因为否则,如果任何地方决定它想要更改 MY_VARIABLE,任何将引用放入其自己的命名空间的地方可能永远不会获得更改的变量)。

更安全的方法是使用 get_setting('var') 方法,因为它可以让您更好地延迟加载您的首选项(即:不要在导入时加载,但是当它第一次被调用时)。

关于python - PyDev:模块的@DynamicAttrs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7521485/

相关文章:

Python 正则表达式到 VB.net

php - 在同一个项目中结合 Eclipse PDT 和 Aptanta 插件 w/JQuery

python - 识别 PyDev 中的 cx_Oracle 安装

python - Pydev:如何将gae项目导入到eclipse Pydev gae项目中?

python-3.x - Pydev 显示 Unresolved 导入,但脚本运行?

python - 从 N 维数组中的值构造 (N+1) 维对角矩阵

android - 使用 Python/(GAE) 为 Android 应用推送通知的服务器端实现

python - 绘制词频和 NLTK

Aptana 工作室 3 片段

javascript - 如何在Aptana中勾勒道场的类(class)代码?