在
tuple“功能”(这真是一个类型,但是这意味着你可以把它像一个函数)将采取任何迭代,包括一个迭代器,作为其参数。因此,如果要将对象转换为元组,只需确保它是可迭代的即可。这意味着实现一种
__iter__方法,该方法应该是一个生成器函数(一个函数体包含一个或多个
yield表达式)。例如
>>> class SquaresTo:... def __init__(self, n):... self.n = n... def __iter__(self):... for i in range(self.n):... yield i * i...>>> s = SquaresTo(5)>>> tuple(s)(0, 1, 4, 9, 16)>>> list(s)[0, 1, 4, 9, 16]>>> sum(s)30
您可以从示例中看到,几个Python函数/类型将以iterable作为其参数,并使用其在产生结果时生成的值序列。



