【问题标题】:Make Pylint recognise variables defined by modifying __dict__使 Pylint 识别通过修改 __dict__ 定义的变量
【发布时间】:2019-06-11 08:37:11
【问题描述】:

我有一个代码库(我没有编写也无法修改),其中创建对象的名称以字符串形式通过以下方式给出:

import sys

class A:
    def __init__(self, name):
        self.name = name
        sys.modules['__main__'].__dict__[name] = self

然后对象被定义和访问为

A('test')
print(test.name)

但是,当我在 Visual Studio Code 中打开它时,所有这些变量都被 pylint 标记为未定义。有谁知道让 Pylint 不识别这些物体的好方法?我可以完全关闭未定义的变量警告,但如果可能的话,我希望仍然可以享受变量检查的好处。

【问题讨论】:

  • 这不是真正的编码问题,我认为您可以在 VSCode 支持站点获得更多帮助
  • 这看起来根本不可能。 Pylint 执行static analysis(不执行程序),因此无法知道A('test') 定义了全局变量test。我想您可以创建一个 linting 工具,在其中硬编码规则“A 定义全局变量”,但很难想象这样的工具已经存在。

标签: python visual-studio-code pylint


【解决方案1】:

在这种情况下,无法让 Pylint 工作。 Pylint 进行静态分析,这需要动态分析。

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 2021-09-05
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2013-08-05
    • 2011-05-20
    相关资源
    最近更新 更多