In Übereinstimmung mit @jolvi, @ArundasR und anderen tritt die Warnung für eine Mitgliedsfunktion auf, die nicht verwendet wird self
.
Wenn Sie sicher sind, dass PyCharm falsch ist, dass die Funktion keine sein sollte @staticmethod
, und wenn Sie null Warnungen bewerten, können Sie diese auf zwei verschiedene Arten entfernen:
Problemumgehung Nr. 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
Problemumgehung Nr. 2 [Danke @ DavidPärsson ]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
Die Anwendung, die ich dafür hatte (der Grund, warum ich @staticmethod nicht verwenden konnte), bestand darin, eine Tabelle mit Handlerfunktionen zum Antworten auf ein Protokoll-Subtyp-Feld zu erstellen. Alle Handler mussten natürlich die gleiche Form haben (statisch oder nicht statisch). Aber einige haben zufällig nichts mit der Instanz gemacht. Wenn ich diese statisch machen würde, würde ich "TypeError: 'staticmethod' Objekt ist nicht aufrufbar" erhalten.
Die Unterstützung der Bestürzung des OP, die vorschlägt, statische Methoden hinzuzufügen, wann immer Sie können, verstößt gegen das Prinzip, dass es einfacher ist, Code später weniger restriktiv zu machen als mehr - eine statische Methode macht sie jetzt weniger restriktiv, da Sie dies können Rufen Sie class.f () anstelle von instance.f () auf.
Vermutungen, warum diese Warnung existiert:
- Es kündigt statische Methode an . Es macht Entwickler auf etwas aufmerksam, das sie möglicherweise beabsichtigt haben.
- Wie @ JohnWorrall hervorhebt, wird es Ihre Aufmerksamkeit erregen, wenn das Selbst versehentlich aus der Funktion ausgeschlossen wurde.
- Es ist ein Hinweis, das Objektmodell zu überdenken. Vielleicht gehört die Funktion überhaupt nicht in diese Klasse.
self
irgendwo innerhalb der Methode? (Wenn die Frage wirklich lautet: "Warum haben die Designer von PyCharm es so entworfen ... müssen Sie sie fragen, nicht SO ...)