TypeError: Iteration über Non-Sequence
-
Erstellen Sie
TypeError: iteration over non-sequencein Python neu -
Iterieren Sie über eine Liste, um
TypeError: iteration over non-sequencein Python zu beheben -
Verwenden Sie
__iter__, um den FehlerTypeError: iteration over non-sequencein 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
