TL; DR Такого подкласса нет, потому что Python определяет только синтаксис нарезки, а не какую-либо семантику.
Чтобы быть подклассом Sequence
или Mapping
, класс должен реализовывать __getitem__
. Однако ни один из AB C не требует какой-либо конкретной реализации __getitem__
; как интерпретировать аргумент индекса целиком зависит от реализующего класса.
На самом деле нарезка не является специальной операцией; это просто специальный синтаксис для указания аргумента типа slice
. Следующие значения эквивалентны:
foo[1:3,2::9]
foo[slice(1,3), slice(2,None,9)]
Что касается подписи из __getitem__
, нет никакой разницы между передачей ей одного int
, str
, объект slice
или кортеж, содержащий любую комбинацию типов.