TypeError: Iteration über Non-Sequence
-
Erstellen Sie
TypeError: iteration over non-sequence
in Python neu -
Iterieren Sie über eine Liste, um
TypeError: iteration over non-sequence
in Python zu beheben -
Verwenden Sie
__iter__
, um den FehlerTypeError: iteration over non-sequence
in Python zu beheben
Der TypeError
wird in Python ausgelöst, wenn die Funktion oder Operation auf ein Objekt eines ungeeigneten Typs angewendet wird. Beispielsweise gibt das Hinzufügen von Integer- und String-Objekten TypeError
zurück.
Der Fehler TypeError: iteration over non-sequence
tritt auf, wenn Sie versuchen, über ein nicht iterierbares Objekt zu iterieren. In diesem Tutorial lernen Sie, wie Sie TypeError: iteration over non-sequence
in Python beheben.
Erstellen Sie TypeError: iteration over non-sequence
in Python neu
Nachdem Sie die Ursache von TypeError
verstanden haben, erstellen wir den Fehler iteration over non-sequence
in Python neu. Das Ausführen des folgenden Skripts in Python 2 ergibt TypeError: iteration over non-sequence
.
class Book:
def __init__(self, name, author):
self.name = name
self.author = author
class Collection:
def __init__(self):
self.read = []
def add_book(self, name, author):
self.read.append(Book(name, author))
if __name__ == "__main__":
Books = Collection()
Books.add_book("Romeo and Juliet", "William Shakespeare")
Books.add_book("To Kill a Mockingbird", "Harper Lee")
for book in Books:
print(book.name)
Hier versuchen wir, über das Objekt Bücher
zu iterieren, anstatt über die darin enthaltene Liste gelesen
. Als Ergebnis gibt es in Python 2 TypeError: iteration over non-sequence
.
Ausgang:
Traceback (most recent call last):
File "Main.py", line 17, in <module>
for book in Books:
TypeError: iteration over non-sequence
In Python 3 erhalten Sie die folgende Ausgabe.
Traceback (most recent call last):
File "Main.py", line 17, in <module>
for book in Books:
TypeError: 'Collection' object is not iterable
Iterieren Sie über eine Liste, um TypeError: iteration over non-sequence
in Python zu beheben
Da Books
ein Objekt ist, müssen Sie innerhalb des Objekts Books
über die Liste iterieren. In diesem Fall lautet es for book in Books.read
.
class Book:
def __init__(self, name, author):
self.name = name
self.author = author
class Collection:
def __init__(self):
self.read = []
def add_book(self, name, author):
self.read.append(Book(name, author))
if __name__ == "__main__":
Books = Collection()
Books.add_book("Romeo and Juliet", "William Shakespeare")
Books.add_book("To Kill a Mockingbird", "Harper Lee")
for book in Books.read:
print(book.name)
Ausgang:
Romeo and Juliet
To Kill a Mockingbird
Verwenden Sie __iter__
, um den Fehler TypeError: iteration over non-sequence
in Python zu beheben
Die Methode __iter__
wird verwendet, wenn ein Container einen Iterator benötigt. Es sollte das Iteratorobjekt zurückgeben, das alle Objekte im Container durchlaufen kann.
Books
ist eine Instanz von Collection
. Sie können die Methode __iter__
verwenden, um über das Objekt Books
zu iterieren.
class Collection:
def __iter__(self):
return iter(self.read)
Der folgende Block enthält das vollständige Skript.
class Book:
def __init__(self, name, author):
self.name = name
self.author = author
class Collection:
def __init__(self):
self.read = []
def add_book(self, name, author):
self.read.append(Book(name, author))
def __iter__(self):
return iter(self.read)
if __name__ == "__main__":
Books = Collection()
Books.add_book("Romeo and Juliet", "William Shakespeare")
Books.add_book("To Kill a Mockingbird", "Harper Lee")
for book in Books:
print(book.name)
Ausgang:
Romeo and Juliet
To Kill a Mockingbird
So können Sie den Fehler iteration over non-sequence
in Python lösen. Wir hoffen, dass Sie diese Lösungen hilfreich finden.
Verwandter Artikel - Python TypeError
- Beheben Sie den Python TypeError: List Indices Must Be Integers, Not List
- Beheben Sie den TypeError: Not All Arguments Converted While String Formatting in Python
- Lösen Sie den TypeError: In Python ist eine ganze Zahl erforderlich
- Python TypeError: 1 erforderliches Positionsargument fehlt
- Python TypeError: Nicht hashbarer Typ: Liste
Verwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung