【发布时间】:2018-06-05 13:42:38
【问题描述】:
我什至不知道这是否是正确的放置方式,但我最近在尝试使用对象中的方法时遇到了麻烦,既作为映射引擎(映射闭包到迭代器的元素),又作为生成器的生成器。
我可能通过代码示例来解释这一点要简单得多:
class maybe_generator():
def __init__(self, doer):
self.doer = doer
def give(self):
for i in [1,2,3]:
self.doer(i)
def printer(x):
print('This is {}'.format(x))
def gener(x):
yield(x)
p = maybe_generator(printer)
p.give()
g = maybe_generator(gener)
print('Type of result is {}'.format(g.give()))
输出是
This is 1
This is 2
This is 3
Type of result is None
我本来希望 g 对象不是类型生成器而不是 NoneType。然后我想知道如何实现一个可以潜在生成生成器的函数,或者直接对迭代执行一些边框效果。
提前感谢您的帮助
【问题讨论】:
-
这是因为你的函数
give没有返回任何东西。self.doer(i)确实创建了一个可以产生单个元素的生成器,但它只是将其丢弃。很抱歉,但目前尚不清楚您要完成什么。你想做什么?您可能只想使用map。