robertj wrote:
hi,
irgendwie muss ich beim gebrauch von generatoren und iteratoren noch ein problem haben. vieleicht kann mich einer erhellen
folgende kleiner beispielcode -
from __future__ import generators
class Liste: def __init__(self, *_values): self.Values = _values self.Index = -1 def __iter__(self): self.Index = -1 return self def next(self): self.Index += 1 if len(self.Values) > self.Index: return self.Values[self.Index] raise StopIteration() def next(self): for value in self.Values: yield value
if __name__ == "__main__": for x in Liste("Eins", "zwei", "drei"): print x
das beispiel laeuft mit der ersten next-methode ohne probleme durch. mit der zweiten bekomme ich eine endlos "schleife" - kapiere bloss nicht warum? [...]
Du mischt Generatoren und Iteratoren. Da kommt natürlich nur Käse raus ;-) Das erste next gehört zu einer Iterator-Klasse, die passt auch so. Wenn du einen Generator machen willst, wird der komplett in einem Callable implementiert - im Normalfall mit einem def-Statement, aber es geht auch so etwas wie: #v+ class MyGen: def __init__(self, values): self.values = values def __call__(self): for v in self.values: yield v mygen = MyGen([3, 4, 5]) for item in mygen(): print item #v- HTH, -- Gerhard _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de