92 votes

appending list mais erreur 'NoneType' object has no attribute 'append'.

J'ai un script dans lequel j'extraie la valeur de chaque utilisateur et l'ajoute dans une liste mais j'obtiens "'NoneType' object has no attribute 'append'". Mon code est le suivant

last_list=[]
if p.last_name==None or p.last_name=="": 
    pass
last_list=last_list.append(p.last_name)
print last_list

Je veux ajouter le nom de famille dans la liste. Si ce n'est pas le cas, il ne faut pas l'ajouter à la liste. Merci de m'aider. Note : p est l'objet que j'utilise pour obtenir des informations de mon module qui contient tous les noms et prénoms, l'âge, etc. .... Veuillez suggérer ....Merci par avance

154voto

jessiejcjsjz Points 1541

La liste est mutable

Changement

last_list=last_list.append(p.last_name)

à

last_list.append(p.last_name)

fonctionnera

47voto

Cédric Julien Points 24177

En faisant pan_list.append(p.last) vous effectuez une opération in situ, c'est-à-dire une opération qui modifie l'objet et ne retourne rien (c'est-à-dire None ).

Vous devriez faire quelque chose comme ceci :

last_list=[]
if p.last_name==None or p.last_name=="": 
    pass
last_list.append(p.last)  # Here I modify the last_list, no affectation
print last_list

14voto

Jayesh Mishra Points 141

Vous n'êtes pas censé l'affecter à une quelconque variable, lorsque vous ajoutez quelque chose dans la liste, elle se met à jour automatiquement. à utiliser uniquement :-

last_list.append(p.last)

si vous l'assignez à nouveau à une variable "last_list", ce ne sera plus une liste (elle deviendra une variable de type none puisque vous n'avez pas déclaré le type pour cela) et append deviendra invalide lors de la prochaine exécution.

5voto

Joe Day Points 5794

Je pense que ce que vous voulez est ceci :

last_list=[]
if p.last_name != None and p.last_name != "":
    last_list.append(p.last_name)
print last_list

Votre déclaration if actuelle :

if p.last_name == None or p.last_name == "":
    pass

En fait, il ne fait jamais rien. Si p.last_name est none ou la chaîne vide, il ne fait rien à l'intérieur de la boucle. Si p.last_name est quelque chose d'autre, le corps de l'instruction if est ignoré.

Aussi, il semble que votre déclaration pan_list.append(p.last) est une faute de frappe, car je ne vois ni pan_list ni p.last être utilisés ailleurs dans le code que vous avez posté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X