Also habe ich eine einfache benutzerdefinierte Fehlerklasse in Python, die ich basierend auf der Python 2.7 Dokumentation erstellt habe:
%Vor% Das gibt mir W0231: __init__ method from base class %r is not called
in PyLint Warnung so gehe ich es sehen und da bin, das sehr hilfreich Beschreibung der „Erklärung nötig.“ Ich würde normalerweise nur diesen Fehler ignorieren, aber ich habe bemerkt, dass eine Tonne Code online einen Aufruf von super am Anfang des enthält init Methode der Klassen benutzerdefinierte Fehler so ist meine Frage: Ist dies tatsächlich tun, dienen ein Zweck oder sind es nur Leute, die versuchen, eine gefälschte pylint Warnung zu beschwichtigen?
Dies war eine gültige Pylint-Warnung: Wenn Sie die Oberklasse __init__
nicht verwenden, können Sie Implementierungsänderungen in der Elternklasse übersehen. Und tatsächlich haben Sie - weil BaseException.message
ab Python 2.6 veraltet ist.
Hier wäre eine Implementierung, die Ihre Warnung W0231 vermeidet und außerdem Pythons Verwarnungswarnung bezüglich des Attributs message
vermeidet.
Dies ist ein besserer Weg, denn die Implementierung für BaseException.__str__
betrachtet nur das 'args' Tupel, es sieht überhaupt keine Nachricht an. Mit Ihrer alten Implementierung hätte print InvalidTeamError()
nur eine leere Zeichenfolge gedruckt, was wahrscheinlich nicht das ist, was Sie wollten!
Betrachtet man den cpython2.7-Quellcode, sollte es kein Problem geben, diesen Aufruf von super init zu vermeiden, und Ja, weil es im Allgemeinen eine gute Übung ist, die Basisklassen-Init in Ihrem init. Ссылка siehe Zeile 60 für BaseException init und Zeile 456, wie Exception von BaseException abgeleitet wird .
Tags und Links python exception python-2.7 pylint