Погоджено з @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' об'єкт не можна викликати".
На підтримку згубності ОП, пропонуючи вам додавати статичний метод, коли тільки можна, суперечить принципу, що пізніше зробити код менш обмежувальним, ніж зробити його більше - створення методу статичного робить його тепер менш обмежуючим, оскільки ви можете виклик class.f () замість instance.f ().
Відгадайте, чому існує таке попередження:
- Він рекламує статичний метод . Це дає зрозуміти розробникам про те, що вони, можливо, задумали.
- Як вказує @ JohnWorrall, він привертає вашу увагу, коли самоврядування було ненавмисно залишене з функції.
- Це підказка переосмислення об'єктної моделі; можливо, функція взагалі не належить до цього класу.
self
десь усередині методу? (Якщо питання насправді "чому дизайнери PyCharm спроектували це так ... вам доведеться їх задати, не так ..."