Согласившись с @jolvi, @ArundasR и другими, предупреждение возникает для функции-члена, которая не использует self
.
Если вы уверены, что PyCharm ошибочен, то что функция не должна быть a @staticmethod
, и если вы цените нулевые предупреждения, вы можете убрать это двумя разными способами:
Обходной путь № 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
Обходной путь № 2 [Спасибо @ DavidPärsson ]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
Приложение, которое у меня было для этого (причина, по которой я не мог использовать @staticmethod), заключалось в создании таблицы функций-обработчиков для ответа на поле подтипа протокола. Все обработчики должны быть одинаковой формы (статические или нестатические). Но некоторые ничего не сделали с экземпляром. Если бы я сделал их статическими, я бы получил объект «TypeError:« staticmethod »не вызывается».
В поддержку испуга OP, предлагая вам добавлять статический метод всякий раз, когда вы можете, это идет вразрез с принципом, что проще сделать код менее ограничивающим позже, чем сделать его более - создание статического метода делает его менее ограничивающим, так как вы можете вызовите class.f () вместо instance.f ().
Угадает, почему существует это предупреждение:
- Он рекламирует статический метод . Это заставляет разработчиков осознать то, что они, возможно, хорошо намеревались.
- Как указывает @ JohnWorrall, он привлекает ваше внимание, когда self случайно покинуло функцию.
- Это сигнал к переосмыслению объектной модели; возможно функция не принадлежит этому классу вообще.
self
где-нибудь внутри метода? (Если вопрос действительно в том, «почему дизайнеры PyCharm разработали его таким образом ... вам придется их задавать, а не ТАК ...)