Den "richtigen" Weg zu definieren, die eine Ausnahme in Python ohne PyLint beschweren
Ich versuche zu definieren, meine eigenen (sehr einfachen) exception-Klasse in Python 2.6, aber egal wie ich es mache bekomme ich eine Warnung.
Erste, der einfachste Weg:
class MyException(Exception):
pass
Diese arbeitet, aber druckt eine Warnung zur Laufzeit: DeprecationWarning: BaseException.Nachricht wurde als veraltet markiert, wie von Python 2.6 OK, also das ist nicht der Weg. Ich habe dann versucht:
class MyException(Exception):
def __init__(self, message):
self.message = message
Funktioniert das auch, aber PyLint meldet eine Warnung: W0231: MyException.__init__: __init__ method from base class 'Exception' is not called
. Also versuchte ich nenne es:
class MyException(Exception):
def __init__(self, message):
super(Exception, self).__init__(message)
self.message = message
So funktioniert es auch! Aber jetzt PyLint meldet einen Fehler: E1003: MyException.__init__: Bad first argument 'Exception' given to super class
Wie zur Hölle mache ich so eine einfache Sache, ohne jede Warnung?
*lint
hat immer Fehler auf der Seite der Warnung, damit die Erzeugung von Warnungen, dass Sie nicht wirklich wichtig sind und können prompt die unvorsichtige Dinge zu tun, die wie add-verwendete Methoden zu versuchen, schließen Sie es. Irgendwelche Fusseln nicht beschweren, ist kein lohnendes Ziel, das Verständnis aller seiner Beschwerden ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim Aufruf
super
müssen Sie die Unterklasse/abgeleitete Klasse als erstes argument, nicht die Haupt - /base-Klasse.Aus der Python online-Dokumentation:
Also die Ausnahme würde sein, wie folgt definiert:
Okay, ich denke ich habe es herausgefunden. Dies scheint zu halten PyLint glücklich:
Dein Erster Weg sollte funktionieren. Ich verwende es selbst die ganze Zeit in Python 2.6.5. Ich glaube nicht, das "message" - Attribut, aber vielleicht das ist, warum Sie immer eine Laufzeit-Warnung im ersten Beispiel.
Den folgenden code, zum Beispiel, läuft ohne Fehler oder runtime-Warnungen:
Das Ergebnis:
Ich weiß nicht, ob PyLint hätte ein problem mit den oben genannten.