Zunächst einmal weiß ich, dass die __init__()
-Funktion einer Klasse in Python keinen Wert zurückgeben kann, so leider diese Option nicht verfügbar ist.Python __init__ Rückgabe fehlgeschlagen zu erstellen
Aufgrund der Struktur meines Codes ist es sinnvoll, Datenbestätigungen (und Aufforderungen an den Benutzer zur Angabe von Informationen) innerhalb der __init__
-Funktion der Klasse zu haben. Dies bedeutet jedoch, dass die Erstellung des Objekts fehlschlagen kann, und ich möchte in der Lage sein, dies in eleganter Weise wiederherzustellen.
Ich fragte mich, was der beste Weg, um damit fortzufahren ist. Ich habe darüber nachgedacht, einen globalen booleschen Wert als "gültige Konstruktion" -Flag zu setzen, aber ich würde es lieber nicht tun.
Alle anderen Ideen (abgesehen von der Umstrukturierung so Assertions kann außerhalb der Initialisierung passieren und Werte werden als Argumente übergeben)? Ich bin im Grunde auf der Suche nach einer Möglichkeit, 0 bei Erfolg zurückgeben und -1 bei einem Fehler während der Initialisierung zurückgeben. (Wie die meisten C-Systemaufrufe)
Eine Ausnahme auslösen. –
Rückgabe 0 bei Erfolg und -1 bei Ausfall ist sehr un-Pythonic. Fehlerrückmeldungen sind schlecht, weil sie einfach zu ignorieren und ausführlich zu behandeln sind. Obendrein führt die Verwendung von 0 und -1 als boolescher Wert nur zu Verwirrung ohne Nutzen. Benutze Python nicht, um C-Code zu schreiben. – abarnert
Wie @jsbueno in seiner Antwort darauf hinweist, werden Klasseninstanzen _initialized_ in '__init __()' nicht erstellt, weshalb sie keinen Wert zurückgibt. Anstatt eine globale Variable zu verwenden, um Fehler zu erkennen oder eine Ausnahme auszulösen, können Sie der Klasse einen Datenmember hinzufügen, um dessen Status anzuzeigen, und dann den Wert direkt überprüfen oder eine Methode aufrufen, die ihren Wert nach '__init __() 'zurückgibt wurde aufgerufen, um festzustellen, ob etwas (und möglicherweise was) wenn falsch. – martineau