wenn ein object in seiner __iter__ nur ein raise StopIteration() hat ... wird dies als normale Exception nach oben durchgereicht.
Erst mit einem Dummy-yield funktioniert es wie gewünscht.
Muss die __iter__ method als Generator (durch yield) definiert sein?
Wie erreiche ich das Verhalten des unteren Dummys ohne das Hässliche 'if'?
Dieses Object lässt sich nicht iterieren ohne Exception
Code: Alles auswählen
class Dummy(object):
def __iter__(self):
raise StopIteration("dummy intended not to iterate")
Code: Alles auswählen
class Dummy(object):
def __iter__(self):
if False:
yield True
raise StopIteration("dummy intended not to iterate")