Je reçois toujours une erreur qui dit
AttributeError: 'NoneType' object has no attribute 'something'
Le code que j'ai est trop long pour être affiché ici. Quels scénarios généraux pourraient provoquer cela AttributeError
, qu'est-ce qui est NoneType
censé signifier et comment puis-je réduire ce qui se passe?
python
attributeerror
nonetype
Jacob Griffin
la source
la source
print
fonctions (ou des instructions selon la version) pour révéler les valeurs réelles des variables dans le code qui rencontre ce problème.None
.Réponses:
NoneType signifie qu'au lieu d'une instance de quelque classe ou objet que vous pensez travailler avec, vous avez réellement
None
. Cela signifie généralement qu'une affectation ou une fonction appelée ci-dessus a échoué ou renvoyé un résultat inattendu.la source
Vous avez une variable qui est égale à None et vous essayez d'accéder à un attribut de celle-ci appelé «quelque chose».
ou
Les deux donneront une
AttributeError: 'NoneType'
la source
None
quelque chose. Ilfoo = None
est peu probable qu'un problème explicite soit le problème; ça va se passerfoo = something()
et vous ne réalisez pas que celasomething()
pourrait revenir enNone
cas d'échec ou que le jeu de résultats était vide ou autre.D'autres ont expliqué ce qu'est
NoneType
et une façon courante de se retrouver avec elle (c.-à-d., L'échec de retourner une valeur d'une fonction).Une autre raison courante pour
None
laquelle vous ne vous attendez pas à cela est l'attribution d'une opération sur place sur un objet mutable. Par exemple:La
sort()
méthode d'une liste trie la liste en place, c'est-à-dire qu'ellemylist
est modifiée. Mais la valeur de retour réelle de la méthode estNone
et non la liste triée. Donc , vous venez d' affecterNone
àmylist
. Si vous essayez ensuite de le faire, disons,mylist.append(1)
Python vous donnera cette erreur.la source
Le
NoneType
est le type de la valeurNone
. Dans ce cas, la variablelifetime
a une valeur deNone
.Un moyen courant pour que cela se produise est d'appeler une fonction manquant a
return
.Il existe cependant un nombre infini d'autres façons de définir une variable sur Aucune.
la source
lifetime
eu une valeur deNone
(pré-édition). Il essayait d'accéder à l' attribut à vie de quelque chose d'autreNone
.Considérez le code ci-dessous.
Cela va vous donner l'erreur
Les points sont donc comme ci-dessous.
la source
Cela signifie l'objet auquel vous essayez d'accéder
None
.None
est uneNull
variable en python. Ce type d'erreur se produit de votre code est quelque chose comme ça.la source
gddc a raison, mais en ajoutant un exemple très fréquent:
Vous pouvez appeler cette fonction sous une forme récursive. Dans ce cas, vous pourriez vous retrouver avec un pointeur nul ou
NoneType
. Dans ce cas, vous pouvez obtenir cette erreur. Donc, avant d'accéder à un attribut de ce paramètre, vérifiez s'il ne l'est pasNoneType
.la source
if foo is not None:
Lors de la construction d'un estimateur (sklearn), si vous oubliez de retourner self dans la fonction d'ajustement, vous obtenez la même erreur.
L'ajout
return self
à la fonction fit corrige l'erreur.la source
Vous pouvez obtenir cette erreur si vous avez commenté HTML dans une application Flask. Ici, la valeur de qual.date_expiry est None:
Supprimez la ligne ou corrigez-la:
la source
si nous attribuons quelque chose comme ci-dessous, cela générera une erreur comme "AttributeError: l'objet 'NoneType' n'a pas d'attribut 'show'"
la source