Ich verwende Ausbeute, um den nächsten Wert in der nächsten Funktion in meiner Klasse zurückzugeben. Aber es gibt den nächsten Wert nicht zurück, es gibt das Generatorobjekt zurück. Ich versuche Iteratoren und Ausbeute besser zu verstehen. Ich könnte es falsch machen. Bitte guck dir das an.wenn ich von innen __next__ ergebe. Warum gibt es ein Generatorobjekt zurück?
class MyString:
def __init__(self,s):
self.s=s
def __iter__(self):
return self
def __next__(self):
for i in range(len(self.s)):
yield(self.s[i])
r=MyString("abc")
i=iter(r)
print(next(i))
Das gibt:
Generator Objekt __next__ bei 0x032C05A0
['__next__' gibt das nächste Element im Iterator zurück] (https://docs.python.org/3/library/stdtypes.html#iterator.__next__), so dass' __next__' ein Generator nicht wirklich sinnvoll ist, oder gut, es bedeutet, dass jeder Wert Ihres "MyString" Iterators ein Generator ist. –
MyString sollte '__next__' nicht definieren. '__next__' ist für Iteratoren, nicht für Iterables. Ebenso sollte es nicht für "__iter__" zurückkehren. – user2357112