为什么生成器对象不是返回生成器?

时间:2019-10-18 22:01:50

标签: python-3.x

我有使用生成器的简单迭代对象。但是__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__())

1 个答案:

答案 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__())