Это немного напоминает мне, что OrderedDict в Python не является типом последовательности. У этого есть концепция порядка, но это не последовательность.Как узнать, имеет ли тип Python концепцию порядка? Что такое последовательность, на самом деле?
Python docs говорит
Есть семь типов последовательностей: строки, строки Unicode, списки, кортежи, ByteArray, буфера, и объекты xrange.
Для других контейнеров см. Встроенные классы dict и set, а также модуль коллекций . ... Большинство типов последовательностей поддерживают следующие операции .... Типы последовательностей также поддерживают сравнения.
Эти операции, соответствующие __contains__
, __add__
для конкатенации, __getitem__
с целыми числами (в range(len(foo))
), __len__
, __min__
, __slice__
, index
и count
. __lt__
и т. Д. Реализуют сравнения.
Упорядоченные инструменты реализуют некоторые из этих методов, но не другие, возможно, потому, что синтаксический сахар для доступа к элементам с помощью ключа (как в dict) или порядка (как в индексе) является тем же самым.
Я знаю, если что-то реализует __iter__
Я могу пройти через него. Как я могу определенно узнать, есть ли у кого-то заказ? Я бы подумал, что это означает «последовательность», n-й элемент всегда является n-ым.
Я определенно заинтересован в пользовательских типах. – pfctdayelise
Это работает и для пользовательских типов, при условии, что автор задал вопрос о создании указанного типа a (фактического или виртуального) подкласса 'collections.abc.Sequence'. – delnan