【发布时间】:2019-08-14 17:42:24
【问题描述】:
在 python 中,我有一个类,它有一个返回生成器的方法:
class foo():
data = [1, 2, 3]
def mygen(self):
for d in self.data:
yield d
instance = foo()
print([i for i in instance.mygen()])
但我无法扭转这一点:
print([i for i in reversed(instance.mygen())])
TypeError: 'generator' object is not reversible
所以我想我可以实现一个在调用__iter__ 时返回生成器的类,像这样
class foo():
data = [1, 2, 3]
def mygen(self):
return _ReversibleIterator(self)
class _ReversibleIterator(object):
def __init__(self, obj):
self.obj = obj
def __iter__(self):
for d in obj.data:
yield d
def __reversed__(self):
for d in reversed(obj.data):
yield d
但我认为这不太一样,因为_ReversibleIterator 类没有next() 方法。
那么创建返回迭代器的类方法的pythonic方法是什么?可以是reversed()?
(显然我只是以[1,2,3] 为例。真正要迭代的东西是不那么简单可逆的)
【问题讨论】: