我有使用生成器的简单迭代对象。但是__iter__()
的{{1}}方法无法从Obj()
实时演示为here。
Generator().__init__()
我希望控制台输出为#!/usr/bin/env python3
class Obj():
def __init__(self, word):
self.word = word
def __iter__(self):
return Generator(self.word)
class Generator():
def __init__(self, word):
for l in word:
yield l
obj = Obj('qwe')
it = iter(obj)
print(it.__next__())
print(it.__next__())
print(it.__next__())
。
答案 0 :(得分:0)
__init__
无法返回或产生非None
值。对于您拥有的资源,Generator
不是生成器对象,而Obj
是生成器对象。 Obj.__iter__
是应该yield
赋值的方法,您可能会完全摆脱Generator
类,除非它用于您未显示的其他内容发布的代码段。
class Obj():
def __init__(self, word):
self.word = word
def __iter__(self):
for l in self.word:yield l
obj = Obj('qwe')
print(obj.__next__())
print(obj.__next__())
print(obj.__next__())