2016-08-11 4 views
1

Ich schreibe etwas ähnlich wie ein Array, aber mit einigen Verbesserungen. Natürlich sollte es iterierbar sein. Aber ich möchte nicht wirklich ein anderes Objekt als Iterator machen, und "für mich in myObject.generator()" erscheint mir zu klobig. Gibt es eine Möglichkeit, eine Generatorfunktion zu erstellen, die für 'for I in myObject' funktionieren würde?Ist es möglich, Objekt-Iteration ohne ein separates Iterator-Objekt durchzuführen?

+3

Schauen Sie sich die '__iter__' magische Methode an [__iter__] (https://docs.python.org/3/library/stdtypes.html#iterator-types) –

Antwort

7

Verwenden Sie einfach eine Generatorfunktion für die __iter__ method:

def __iter__(self): 
    for value in self._values: 
     yield value 

Dies erzeugt einen neuen Generator Iteratorobjekt jedes Mal iter() für das Objekt aufgerufen wird (was, was for tut für Sie, wenn Sie Ihr Objekt verwenden in einer Schleife).

Verwandte Themen