2013-06-01 5 views
5

Ich verwende eine Klasseninstanz, die eine Zeichenfolge zurückgibt.Warum der von einer Klasseninstanz zurückgegebene String den Typ NoneType behält, obwohl IDLE angibt, dass es sich um eine Zeichenfolge handelt?

Ich rufe zweimal diese Instanz auf und sammle die zurückgegebenen Werte in einer Liste. Dann versuche ich, .sort() zu verwenden, um diese beiden Zeichenfolgen zu sortieren. Wenn ich dies tue, wird jedoch ein Fehler ausgegeben, der besagt, dass der Typ (Nonetype - betrachtet es als Objekt).

Ich habe mit Typ (Element einer Liste) überprüft und es gab den Typ "String" zurück. Ich habe keine Ahnung, was los ist. Grundsätzlich im Leerlauf heißt es, dass ich Strings in einer Liste habe .. aber bei der Ausführung gibt es einen Fehler, der besagt, dass der NoneType (Liste dieser Strings) nicht iterierbar ist.

hier ein Beispiel:

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

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

ERROR:

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

Vielen Dank!

George

Antwort

3

Von dem Python 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.

Verwendung sorted():

list_sorted = list(sorted(list_of_strings)) 
+0

Danke Elaszar! Es funktionierte. George – GeorgeG

0

sollten Sie verwenden sorted():

list_sorted = list(sorted(list_of_strings)) 

Sie rufen jetzt list() unter None an, was das Ergebnis des Anrufs .sort() ist.