Ich habe versucht, selbst nach dieser Antwort zu suchen, aber da war zu viel Lärm.Machen Generatoren einfach neue Objekte mit __iter__ und nächsten Funktionen?
Sind Generatoren in Python nur ein Convenience-Wrapper für den Benutzer, um ein Iterator-Objekt zu erstellen?
Wenn Sie den Generator definieren:
def test():
x = 0
while True:
x += 1
yield x
ist einfach Python ein neues Objekt zu machen, Hinzufügen der __iter__
Methode, dann den Rest des Codes in die next
Funktion setzen?
class Test(object):
def __init__(self):
self.x = 0
def __iter__(self):
return self
def next(self):
self.x += 1
return self.x
Das ist genau die Antwort, nach der ich gesucht habe. Ich wusste nicht genau, wie ich sagen sollte, was die Sprache unter der Haube tat. Ich bin froh, dass Sie das "dis" -Modul verwendet haben - ich wusste, wonach ich suchen wollte, konnte aber nicht die Phrasierung finden, um die Ergebnisse tatsächlich zu finden. – Esteban
In diesem Fall denke ich, dass es für Sie profitabel sein wird, die PEP zu lesen, in der die Generatoren zuerst vorgeschlagen wurden - Sie greifen jetzt genug, um den Großteil davon zu verstehen :-) https://www.python.org/dev/ peps/pep-0255 / –