En accord avec @jolvi, @ArundasR et d'autres, l'avertissement se produit sur une fonction membre qui n'utilise pas self
.
Si vous êtes sûr que PyCharm est erroné, que la fonction ne doit pas être a @staticmethod
, et si vous n'évaluez aucun avertissement, vous pouvez faire disparaître celui-ci de deux manières différentes:
Solution de contournement n ° 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
Solution de contournement n ° 2 [Merci @ DavidPärsson ]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
L'application que j'avais pour cela (la raison pour laquelle je ne pouvais pas utiliser @staticmethod) consistait à créer une table de fonctions de gestionnaire pour répondre à un champ de sous-type de protocole. Tous les gestionnaires devaient bien sûr être de la même forme (statique ou non statique). Mais certains n'ont rien fait avec l'instance. Si je les rendais statiques, j'obtiendrais "TypeError: l'objet 'staticmethod' n'est pas appelable".
À l'appui de la consternation de l'OP, suggérer d'ajouter une méthode statique chaque fois que vous le pouvez, va à l'encontre du principe selon lequel il est plus facile de rendre le code moins restrictif plus tard que de le rendre plus - rendre une méthode statique la rend moins restrictive maintenant, en ce sens que vous pouvez appelez class.f () au lieu de instance.f ().
Devinez pourquoi cet avertissement existe:
- Il annonce une méthode statique . Cela rend les développeurs conscients de quelque chose qu'ils ont peut-être voulu.
- Comme le souligne @ JohnWorrall, cela attire votre attention lorsque le soi a été exclu par inadvertance de la fonction.
- C'est un signal pour repenser le modèle objet; peut - être que la fonction n'appartient pas du tout à cette classe.
self
n'importe où dans la méthode? (Si la question est vraiment "pourquoi les concepteurs de PyCharm l'ont-ils conçu de cette façon ... vous devrez leur demander, pas SO ...)