如何设置 coc-pyright 不警告方法中未使用的 self 参数?

How to set coc-pyright to not warn for unused self parameter in a method?

我在 neovim 中使用 CoC 的 coc-pyright 扩展。

在某些情况下,我们在 class 中有一个不需要访问自身变量的实例方法。例如,我可能在 __init__ 方法中有一些变量不需要在 class 中的其他任何地方访问。作为玩具示例,请考虑,

class Example:
    def __init__(self, some_var):
        self.another_var = self.process_var(some_var)

    def process_var(self, some_var):
        return some_var*2

现在,这里 pyright 警告我 self 未被访问。有没有办法设置 Pyright 在这种情况下不发出警告?

P.S。传递的变量是特定于实例的变量。所以 self 需要让它成为一个实例变量,对吧?

所以您将 some_var 传递给该方法而不是将其用作实例变量,这意味着您实际上不需要 self.您正在使用 process_var 作为静态方法,因为它正在传递所需的所有数据。您可以使用静态方法装饰器并像这样删除 self:

class Example:
    def __init__(self, some_var):
        self.another_var = self.process_var(some_var)

    @staticmethod
    def process_var(some_var):
        return some_var*2

如果你改用实例变量,它看起来像这样

class Example:
    def __init__(self, some_var):
        self.some_var = some_var
        self.another_var = self.process_var()

    def process_var(self):
        return self.some_var*2

静态方法方法在这里更清晰,因为通过使用实例变量,您需要在调用 process_var 之前了解 some_var 的当前状态,否则结果会有所不同。

您可以在 pyrightconfig.json 文件中将 reportUnusedVariable 设置为 false,但我不推荐这样做,因为 pyright 为您提供了有关如何重构代码的宝贵信息。