2013-06-01 9 views
5

Używam instancji klasy, która zwraca ciąg znaków.Dlaczego ciąg zwracany z instancji klasy utrzymuje typ NoneType, mimo że IDLE mówi, że jest ciągiem znaków?

Wywołuję dwa razy to wystąpienie i zbieram zwrócone wartości do listy. Następnie próbuję użyć .sort() do sortowania tych dwóch łańcuchów. Jednakże, gdy to zrobię, generuje błąd informujący, że typ jest (Nonetype - uważa go za obiekt).

Sprawdziłem z typem (element listy) i zwróciłem typ "string". Nie mam pojęcia, co się dzieje. Zasadniczo w stanie bezczynności mówi, że mam ciągi znaków na liście ... ale podczas uruchamiania wyrzuca błąd mówiąc, że NoneType (lista tych ciągów) nie jest iterable.

Oto przykład:

list_of_strings = [class_method(args), class_method(another_args)] ## this instance returns string 

print type(list_of_strings[0]) #prints type 'str' 

błąd:

list_sorted = list(list_of_strings.sort()) 
TypeError: 'NoneType' object is not iterable 

Thanks a lot!

George

Odpowiedz

3

Od pytona documentation:

7. The sort() and reverse() methods modify the list in place for economy of space when sorting or reversing a large list. To remind you that they operate by side effect, they don’t return the sorted or reversed list.

użytkowania sorted():

list_sorted = list(sorted(list_of_strings)) 
+0

Dzięki Elaszar! Zadziałało. Jerzy – GeorgeG

0

Należy wykorzystać sorted():

list_sorted = list(sorted(list_of_strings)) 

Teraz dzwonisz pod numer list() pod numerem None, który jest wynikiem połączenia .sort().

Powiązane problemy