Ich entwickle Python mit PyDev in Eclipse, und ein Teil meines Codes erzeugt Fehler im Code-Analyse-Tool. Speziell:
%Vor% Gibt mir einen "Method '__enter__- group' should have self as first parameter"
Fehler und einen ähnlichen Fehler für __exit__
. Gibt es eine Möglichkeit, dies zu lösen, ohne self
einer anderen Variablen zuzuweisen und die Variable in den anderen Methodensignaturen wiederzuverwenden?
Sie könnten diesen Fehler in den Einstellungen deaktivieren ...
%Vor%Oder refaktorieren Sie den Code ...
%Vor%Was erwartest du noch? Die Fehlerprüfungen helfen Ihnen dabei. Wenn Sie nicht glauben, dass es sich um legitime Fehler handelt, deaktivieren Sie sie oder refaktorieren Sie den Code.
In diesem Fall würde ich den Code umgestalten. Es ist besser lesbar, wie die Antwort von König Radical zeigt. Er hat nicht verstanden, dass s
ein weiteres self
war.
Die Verwendung von Ctrl+1
in einer Zeile mit einem Fehler von PyDev bringt Ihnen immer eine Korrektur, mit der Sie den PyDev-Fehler in der Zeile ignorieren können. In diesem speziellen Fall können Sie den Fehler ignorieren, indem Sie #@NoSelf
am Ende der Zeile hinzufügen. Ctrl+1
ist auch nützlich, wenn ein nicht verwendeter Import benötigt wird und in anderen Situationen.
Es sollte in erster Linie kein Fehler sein, da die Verwendung von "Selbst" nur eine allgemein akzeptierte Konvention ist. Es sollte höchstens eine Warnung sein, im Sinne von "Sind Sie sicher, dass Sie die Klasseninstanz als erstes Argument verwenden?"
IMO, das ist eine alberne Warnung. Der Name "self" ist nur eine Konvention. Ich habe die Angewohnheit, den Namen "_" zu verwenden, um die Namen der Mitglieder deutlicher zu machen,
%Vor%und ich bekomme diese Warnung in meiner ganzen Bibliothek von Tausenden von Codezeilen. Also werde ich diese Warnung ausschalten. Wäre schön, in der Lage sein zu spezifizieren "für dieses Projekt verwende ich '_' per Konvention" ...
PyDev sagt Ihnen, dass Python-Klassenmethoden self
als erste Variable haben müssen, wenn sie auf die Klassenvariablen zugreifen. Siehe: Ссылка
Edit: Es kam mir anfangs nicht in den Sinn, dass Sie s
anstelle von self
verwenden, aber im Hinblick auf die anderen Antworten könnte das der Fall sein. Wenn Sie dies jedoch tun, müssen Sie auch s
als Ihre Variable in der Methode verwenden und nicht self
.
und
%Vor% Klassenmitgliedermethoden müssen immer ihren ersten Parameter self
Sie können einen Dekorateur verwenden:
%Vor%Die integrierte Funktion, die für diesen Zweck verwendet wird
Tags und Links python code-analysis pydev