Concordado com @jolvi, @ArundasR e outros, o aviso ocorre em uma função de membro que não usa self
.
Se você tem certeza de que o PyCharm está errado, que a função não deve ser a @staticmethod
, e se você valorizar zero avisos, poderá fazer com que este desapareça de duas maneiras diferentes:
Solução nº 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
Solução nº 2 [Obrigado @ DavidPärsson ]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
O aplicativo que eu tinha para isso (o motivo pelo qual não consegui usar o @staticmethod) foi criar uma tabela de funções do manipulador para responder a um campo de subtipo de protocolo. Todos os manipuladores tinham que ter a mesma forma de curso (estático ou não estático). Mas alguns não fizeram nada com a instância. Se eu fizesse essas estáticas, obteria o objeto "TypeError: 'staticmethod' não é possível chamar".
Para apoiar a consternação do OP, sugerir que você adicione método estático sempre que puder, contraria o princípio de que é mais fácil tornar o código menos restritivo posteriormente, do que torná-lo mais - tornar um método estático o torna menos restritivo agora, na medida em que você pode chame class.f () em vez de instance.f ().
Adivinha por que esse aviso existe:
- Ele anuncia o método static . Isso torna os desenvolvedores conscientes de algo que eles podem ter pretendido.
- Como aponta o @ JohnWorrall, chama sua atenção quando o eu foi inadvertidamente deixado de fora da função.
- É uma sugestão para repensar o modelo de objeto; talvez a função não pertença a essa classe.
self
algum lugar dentro do método? (Se a questão realmente é "por que os designers da PyCharm projetá-lo desta forma ... você vai ter que pedir-lhes, não tão ...)