我看了一下建在从Python文档对象的迭代方法:为什么Python可迭代对象按照他们的方式工作?
https://docs.python.org/2/library/stdtypes.html#iterator-types
是怎么说__iter__
方法如下:
Return an iterator object. The object is required to support the iterator protocol described below.
然而,在我看来,这似乎不是这种情况,如果我使__iter__
方法返回一个字符串,如'abc'
我得到一个类型错误:TypeError: iter() returned non-iterator of type 'str'
但我们知道,字符串是可迭代的对象,它怎么可能像Python那样对待它是n一个迭代对象?
我可以解决这样这个问题:
def __iter__(self):
return 'abc'.__iter__()
,但我不明白为什么我必须这样做,这样,而不是仅仅返回'abc'
对象。
我还注意到Python文档对初学者不是很有帮助,它确实没有让这个学习过程变得简单。用什么逻辑可以得出结论return 'abc'.__iter__()
是通过阅读文档去的路?
如果您对我在哪里可以深入了解更多关于内置方法等方面的任何建议,如果您愿意分享,我会非常高兴。
字符串是*迭代*,但他们不是*迭代器*。该文档完全清楚构成* iterator *的是什么:支持迭代器协议的任何对象。 – nneonneo