带有动态__iter__函数的Python类

时间:2018-01-23 13:58:31

标签: python oop iterator

我想创建一个应该具有动态迭代器函数的Python类。也就是说,我想将迭代器函数作为参数发送,而不是在类中硬编码。

以下是一个示例类:

class fib:   
    def __init__(self, items, iter_function):
        self.iter_function = iter_function
        self.items = items

    def __iter__(self):
        self.iter_function(self.items)

有两个示例迭代器函数:

def iter_func(items):
    for item in items:
        yield item

def iter_func2(items):
    for item in items:
        yield item*2

当我使用以下内容创建对象时,出现错误:

a = fib([1,2,3],iter_func)
next(iter(a))

错误打印为:

----> 1 next(iter(a))

TypeError: iter() returned non-iterator of type 'NoneType'

任何想法都表示赞赏。

0 个答案:

没有答案