2012-10-15 20 views
7

Mam skrypt, w którym jestem wyodrębnianie wartości dla każdego użytkownika i dodając, że na liście, ale otrzymuję obiekt "" NoneType "nie ma atrybutu" append "". Mój kod przypominalista załączeń, ale błąd "NoneType" obiektu nie ma atrybutu "dołącz"

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

Chcę dodać nazwisko na liście. Jeśli nie ma, to nie dodawaj go do listy. Proszę o pomoc: Uwaga: p to obiekt, którego używam do pobierania informacji z mojego modułu, które mają wszystkie imię, nazwisko, wiek itp. Proszę o sugestie .... Z góry dziękuję

+1

jest to Python? Jeśli tak, dodaj tag ... – rene

+0

Tak, jego python – learner

Odpowiedz

12

Podczas wykonywania pan_list.append(p.last) jesteś " ponowne wykonanie operacji inplace, czyli operacji, która modyfikuje obiekt i nie zwraca nic (tj. None).

Powinieneś zrobić coś takiego:

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 
+0

Ups. Właściwie to last_list = last_list.append (p.last_name) – learner

+1

@learner To spowodowałoby ten sam problem. – cwallenpoole

+0

więc jaki byłby mój kod, aby dodać last_name na liście i pomijając none lub puste last_name ?? Proszę zasugerować – learner

2

myślę, co chcesz to:

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

Aktualna if:

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

Skutecznie nigdy nic nie robi. Jeśli p.last_name ma wartość none lub pusty łańcuch, to nic nie robi w pętli. Jeśli p.last_name jest czymś innym, treść instrukcji if jest pomijana.

Wygląda również na to, że twoje oświadczenie pan_list.append(p.last) jest literówką, ponieważ nie widzę, aby pan_list ani p.last były używane gdziekolwiek indziej w kodzie, który opublikowałeś.

+0

, więc jaki byłby mój kod, aby dodać last_name na liście i pomijając brak lub puste nazwisko? Proszę zasugerować – learner

+0

Dzięki wszystkim. Pracuje :) – learner

6

lista jest zmienny

Zmień

last_list=last_list.append(p.last_name) 

do

last_list.append(p.last_name) 

zadziała

+0

Dlaczego nie zastąpiona linia działa? – alds

Powiązane problemy