我看了一下建在從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