我做了一个迭代器:
it = iter([1,2,3])
len(it)
失败,因为“‘list_iterator’类型的对象没有 len()”。
我想我可以通过这样做来增加长度
it.__len__ = lambda: 3
但这也会错误“'list_iterator'对象没有属性'length'”
如何设置迭代器对象的长度?
包起来:
it = iter([1,2,3])
class It:
__len__ = it.__length_hint__
__iter__ = it.__iter__
__next__ = it.__next__
it = It()
print(len(it)) # 3
print(next(it)) # 1
print(len(it)) # 2
print(*it) # 2 3