Ich habe eine list
von benutzerdefinierten Objekten (Beispiel ist unten).Wie kann ein benutzerdefiniertes Objekt iterierbar gemacht werden?
Verwenden: list(itertools.chain.from_iterable(myBigList))
Ich wollte alle Unterlisten stations
in eine große Liste "fusionieren". Also dachte ich, ich muss meine benutzerdefinierte Klasse iterierbar machen.
Hier ist ein Beispiel meiner benutzerdefinierten Klasse.
class direction(object) :
def __init__(self, id) :
self.id = id
self.__stations = list()
def __iter__(self):
self.__i = 0 # iterable current item
return iter(self.__stations)
def __next__(self):
if self.__i<len(self.__stations)-1:
self.__i += 1
return self.__stations[self.__i]
else:
raise StopIteration
I umgesetzt __iter__
und __next__
aber es scheint nicht zu funktionieren. Sie werden nicht einmal angerufen.
Irgendeine Idee was könnte ich falsch gemacht haben?
Hinweis: Die Verwendung Python 3.3
Sind Subklassen Sie 'list'? – dawg
Nein, eine Liste ist nur ein Mitglied meiner Klasse. –
Ist das die tatsächliche Einrückung? '__iter__' und' __next__' sind außerhalb Ihrer Klassendefinition. – jonrsharpe