Ich bekomme immer wieder einen Fehler, der besagt
AttributeError: 'NoneType' object has no attribute 'something'
Der Code, den ich habe, ist zu lang, um hier zu posten. Welche allgemeinen Szenarien würden dies verursachen AttributeError
, was NoneType
soll bedeuten und wie kann ich eingrenzen, was los ist?
python
attributeerror
nonetype
Jacob Griffin
quelle
quelle
print
Funktionen (oder Anweisungen je nach Version) hinzu, um die tatsächlichen Werte anzuzeigen, die Variablen tatsächlich in dem Code haben, bei dem dieses Problem auftritt.None
.Antworten:
NoneType bedeutet, dass Sie anstelle einer Instanz einer Klasse oder eines Objekts, mit der Sie arbeiten, tatsächlich arbeiten
None
. Dies bedeutet normalerweise, dass eine Zuweisung oder ein Funktionsaufruf oben fehlgeschlagen ist oder ein unerwartetes Ergebnis zurückgegeben hat.quelle
Sie haben eine Variable, die gleich None ist, und Sie versuchen, auf ein Attribut mit dem Namen "etwas" zuzugreifen.
oder
Beide ergeben eine
AttributeError: 'NoneType'
quelle
None
etwas herausholen. Ein expliziterfoo = None
ist wahrscheinlich nicht das Problem; es wird seinfoo = something()
und Sie wissen nicht, dasssomething()
es zurückkehren könnte,None
wenn es nicht erfolgreich ist oder die Ergebnismenge leer war oder was auch immer.Andere haben erklärt, was
NoneType
ist und wie man am Ende damit endet (dh wenn ein Wert von einer Funktion nicht zurückgegeben wird).Ein weiterer häufiger Grund, den Sie
None
nicht erwarten, ist die Zuweisung einer In-Place-Operation für ein veränderliches Objekt. Zum Beispiel:Die
sort()
Methode einer Liste sortiert die Liste an Ort und Stelle, dh siemylist
wird geändert. Der tatsächliche Rückgabewert der Methode ist jedochNone
und nicht die Liste sortiert. So haben Sie gerade zugewiesenNone
zumylist
. Wenn Sie dies beispielsweise das nächste Mal versuchen, gibtmylist.append(1)
Python diesen Fehler aus.quelle
Das
NoneType
ist der Typ des WertesNone
. In diesem Fall hat die Variable denlifetime
WertNone
.Ein üblicher Weg, dies zu erreichen, besteht darin, eine Funktion aufzurufen, bei der a fehlt
return
.Es gibt jedoch unendlich viele andere Möglichkeiten, eine Variable auf Keine zu setzen.
quelle
lifetime
hatte einen Wert vonNone
(Pre-Edit). Er versucht , die Lebensdauer für den Zugriff auf Attribut von etwas anderes , das warNone
.Betrachten Sie den folgenden Code.
Dies wird Ihnen den Fehler geben
Die Punkte sind also wie folgt.
quelle
Dies bedeutet das Objekt, auf das Sie zugreifen möchten
None
.None
ist eineNull
Variable in Python. Diese Art von Fehler tritt auf, wenn Ihr Code so etwas ist.quelle
gddc ist richtig, fügt aber ein sehr häufiges Beispiel hinzu:
Sie können diese Funktion in rekursiver Form aufrufen. In diesem Fall könnten Sie am Nullzeiger oder landen
NoneType
. In diesem Fall können Sie diesen Fehler erhalten. Überprüfen Sie daher vor dem Zugriff auf ein Attribut dieses Parameters, ob dies nicht der Fall istNoneType
.quelle
if foo is not None:
Wenn Sie beim Erstellen eines Schätzers (sklearn) vergessen, sich selbst in der Anpassungsfunktion zurückzugeben, wird der gleiche Fehler angezeigt.
Das Hinzufügen
return self
zur Anpassungsfunktion behebt den Fehler.quelle
Sie können diesen Fehler erhalten, wenn Sie HTML in einer Flask-Anwendung auskommentiert haben. Hier ist der Wert für qual.date_expiry None:
Löschen Sie die Zeile oder reparieren Sie sie:
quelle
Wenn wir etwas wie das Folgende zuweisen, wird der Fehler als "AttributeError: 'NoneType' Objekt hat kein Attribut 'show'" ausgegeben.
quelle