Как настроить coc-pyright, чтобы не предупреждать о неиспользуемом параметре self в методе?
Я использую расширение CoC в neovim.
Бывают случаи, когда у нас есть метод экземпляра в классе, которому не нужен доступ к собственным переменным. Например, у меня могут быть переменные в
__init__
метод, доступ к которому не требуется где-либо еще в классе. В качестве игрушечного примера рассмотрим:
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 не выдавал предупреждения в таких случаях?
PS Передаваемая переменная является переменной для конкретного экземпляра. Так
self
потребовалось бы сделать его переменной экземпляра, не так ли?
1 ответ
Таким образом, вы передаете some_var методу вместо того, чтобы использовать его в качестве переменной экземпляра, что означает, что вам на самом деле не нужно self. Вы используете process_var как статический метод, так как ему передаются все необходимые данные. Вы можете использовать декоратор статического метода и удалить себя следующим образом:
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
Подход со статическим методом здесь намного чище, поскольку, используя переменные экземпляра, вам нужно знать, какое текущее состояние some_var находится перед вызовом process_var, иначе результаты будут отличаться.
Вы можете установить для reportUnusedVariable значение false в файле pyrightconfig.json, но я бы не рекомендовал это, поскольку pyright дает вам ценную информацию о том, как реструктурировать ваш код.