什麼方法必須在一個類定義來實現,以便它可以被看作是一個序列類型和迭代類型?如果他們有一個正式的定義,你是否也可以提供一個PEP或其定義的文檔的參考?在Python中,類型的確切規範是(1)序列(2)可迭代類型?
1
A
回答
5
可迭代是:
與
__iter__()
或__getitem__()
方法的目的。的 iterables實例包括所有類型的序列(如列表,STR,和元組) 和一些非序列類型,如字典和文件。當可迭代 對象被作爲參數傳遞給內置函數ITER(),它 返回對象的迭代器。這個迭代器對於一組值爲一次傳遞 是有利的。
迭代器是:
可迭代具有next()方法。迭代器都要求有一個 方法
__iter__()
返回迭代器對象本身。一個 迭代器適用於一組值。
序列是:
可迭代該支持使用整數有效元素訪問經由
__getitem__()
特殊方法 指數,並限定了LEN() 方法,它返回序列的長度。一些內置序列 類型是list,str,tuple和unicode。需要注意的是字典還支持__getitem__()
和__len__()
,但被認爲是一個映射,而不是 序列,因爲查找隨心所欲的使用一成不變的鍵 而不是整數。
2
的集合模塊定義用於定義序列和iterables抽象基類。對於迭代必須定義__iter__
,爲序列必須定義__getitem__
。見http://docs.python.org/library/collections.html#collections-abstract-base-classes。
相關問題
- 1. Python的類型錯誤:「類型」對象不是可迭代
- 2. scala中類似可克隆性狀的正確類型規範
- 3. 類型錯誤:類型WindowsPath「的說法是不是可迭代 - 開放與Python
- 4. Python列表類型錯誤:「詮釋」對象不是可迭代
- 5. 類型錯誤:類型的參數「功能」不是可迭代
- 6. 在類型列表中迭代
- 7. TypeError:'int'類型的參數不是可迭代的python 2.7
- 8. TypeError:'NoneType'類型的參數是不可迭代的python
- 9. Python遊戲| TypeError:'NoneType'類型的參數是不可迭代的
- 10. Python - 類型'函數'的參數不是可迭代的錯誤
- 11. Python的類型錯誤:「NoneType」對象不是可迭代
- 12. 的Python Crawling-類型錯誤:「詮釋」對象不是可迭代
- 13. Python類型錯誤:'numpy.int32'對象是不可迭代的
- 14. 迭代列表清單... TypeError:類型'float'的參數是不可迭代的
- 15. Django的類型錯誤:「模型庫」對象不是可迭代
- 16. Python類型錯誤:int對象不是可迭代
- 17. TypeError:參數類型'bool'在openerp中是不可迭代的
- 18. 類對象的通用類型規範
- 19. Matlab數據類型規範
- 20. XML數據類型規範
- 21. C#類型參數規範
- 22. 是否可以確定某個類型是否是範圍枚舉類型?
- 23. 獲取匹配類型1而不是類型2的文檔
- 24. 什麼是序列容器的迭代器類型?
- 25. 類型錯誤:類型「布爾」的說法是不迭代
- 26. 類型錯誤:類型「項目」的說法是不迭代
- 27. QDBusArgument的確切類型
- 28. 從基類型列表中返回正確的後代類型
- 29. 代理類可以是可索引或可迭代的序列
- 30. 迭代器類型爲基本類型陣列
很棒的回答。謝謝! –