我很長時間以來一直對這個問題感到困惑。對象中是否包含被稱爲序列類型的元素的任何Python類型?是否有任何類型的Python對象包含被稱爲序列類型的元素?
回答
python中的序列是Containers(即它們有一個__contains__
方法),是可以進行的(即它們有一個__iter__
方法)並且是Sized的(即它們有一個__len__
方法)。他們也有以下方法:
__getitem__
__reversed__
index
count
這些都是你的基本不變序列,是可變他們也會有以下幾種方法:
__setitem__
__delitem__
insert
append
reverse
extend
pop
remove
__iadd__
非常感謝!我明白 –
你實際上並不需要'__contains__'或'__iter__' - 一個'__getitem__'接受類似序列的索引並最終引發異常就足夠了。 '__reversed__'也是可選的('reversed'可以使用'__getitem__'和'__len__')。 'index'和'count'由內置序列提供,但它們不是必需的(例如,numpy數組不提供它們)。 – lvc
@ lvc非常有啓發性,謝謝。什麼是序列指數?我假設他們必須有'__add__','__neg__','__cmp__'(我想'__mul__'用於擴展切片,或者他們可以通過添加來獲得)?還有其他什麼(或更少)? –
序列是一種遵循序列協議的類型。這意味着不只是指數是數字的,而且它們是連續的,從零開始,並且迭代以增加索引的順序產生元素,並且len(my_sequence)
起作用。實際上,這意味着他們需要適當地實施__getitem__
和__len__
方法。從那裏開始,Python可以「填補空白」,這樣迭代x in my_sequence
和reversed(my_sequence)
都可以在沒有實現關聯方法的情況下工作 - 但他們仍然可以選擇實現這些方法,特別是如果它們可以提供更高效的實現(例如,默認迭代行爲就好像__iter__
剛剛從i=0
嘗試self[i]
,直到它遇到IndexError
,這對於鏈接列表不是理想的)。
他們有一個長度。 '__len__'和'__getitem__'都必須實現。 –
- 1. 序列化爲XML幷包含序列化對象的類型
- 2. DataContractJsonSerializer包含元素類型的子類型的通用列表
- 3. 如何找出對象是否爲任何類型的列表?
- 4. 查找類型的列表是否包含在類型
- 5. Node.js中的請求對象是否包含任何navigator.userAgent類型的信息?
- 6. 檢查列表是否包含類型?
- 7. 測試該列表包含相同類型的「對象」python unittest
- 8. 標量類型是否包含類類型的指針?
- 9. 如何序列化包含基元和List <>類型的對象的JSON?
- 10. 是否有處理選擇「的元素包含類的元素」
- 11. PHPUnit - 檢查數組是否包含特定類型的對象
- 12. 元素'價格'不能包含字符[children],因爲該類型的內容類型僅包含元素
- 13. Scala中的所有序列是否有類型類型?
- 14. 如何反序列化含有不同類型的對象
- 15. 反序列化JSON來強類型的對象包含字典
- 16. java jackson解析包含泛型類型對象的對象
- 17. 知道一個數組是否包含元素類型
- 18. ESE列類型爲XmlSerialize任意對象
- 19. Android的任何類或對象持有任何類型的widget
- 20. 檢查列表是否包含不同派生類型的兩個元素
- 21. Python數據類型是否都是基於C類的對象?
- 22. ngrx在select中沒有返回正確類型的元素(對象被包裝)
- 23. 確定.pdf文件是否具有任何類型的任何表單元素
- 24. 對象類型的數組元素PHP
- 25. 任何內置的函數檢查「數組的所有元素包含[NSNULL null]」類型的對象或不?
- 26. 類型錯誤:類型 '類別'(模型)的對象不是JSON序列
- 27. 對包含2種類型的對象的NSmutableArray進行排序?
- 28. SerializationException:類型不包含在序列化的類型設置
- 29. JSON序列化:類包含泛型類型的通用集合
- 30. 如何檢查一個對象是否爲類c的類型?
HTTPS://docs.python .org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange應該回答你的問題。所有類似序列行爲(如指定協議)都是序列類型。如果它看起來像一個序列,那就是一個序列。你好鴨子打字 – dhke
https://docs.python.org/2/reference/datamodel.html#emulating-container-types –