【发布时间】:2021-03-13 22:09:33
【问题描述】:
我需要创建一个可以管理动态资源的服务(我正在考虑一个正在增长的动态 csv。在这种情况下,我使用了一个列表以便更容易理解),从一个可迭代对象中返回下一个项目.
如果列表完成,输出将为 False,我需要等待添加元素。
当元素最终添加时,生成器应该生成新添加的项目(这是我无法理解的部分)。
a_lst = [1, 2]
class DynamicGenerator:
"""
Generic Generator that return item by item from a_lst and
can append a new item when needed.
"""
def __init__(self):
global a_lst
def gen_lst(self):
for item in a_lst:
yield item
def grow_lst(self, new_item):
a_lst.append(new_item)
class AvailableNextIterator:
"""
Return next item from iterable if it's available,
else return False.
"""
def __init__(self, iterable):
self.iterator = iterable
def __next__(self):
return next(self.iterator, False)
dg = DynamicGenerator()
gl = dg.gen_lst()
it = AvailableNextIterator(gl)
print(it.__next__())
print(it.__next__())
print(it.__next__())
dg.grow_lst(3)
print(it.__next__())
这是代码输出:
1
2
False
False
这是我需要的输出:
1
2
False
3
【问题讨论】:
标签: python dynamic iterator generator