[Python-Dev] slice subscripts for sequences and mappings

Eli Bendersky eliben at gmail.com
Sat Mar 3 13:41:24 CET 2012


>> I'd expect slice subscripts to be part of the sequence interface, and
>> yet they are not. In fact, they are part of the mapping interface. For
>> example, the list object has its slice get/set methods assigned to a
>> PyMappingMethods struct. So does a bytes object, and pretty much every
>> other object that wants to support subscripts.
>
> It comes from:
> http://hg.python.org/cpython/rev/245224d1b8c9
> http://bugs.python.org/issue400998
>
> Written by Michael Hudson and reviewed by Guido.
> I wonder why this patch chose to add mapping protocol support to tuples
> and lists, rather than add a tp_ slot for extended slicing.
>

Why a separate tp_ slot for extended slicing? ISTM slicing pertains to
sequences, similarly to other numeric indices. If you look at
PySequenceMethods it has these (apparently no longer used fields):

    void *was_sq_slice;
    void *was_sq_ass_slice;

These were "simple" slices (pairs of numbers). I suppose if any change
is considered, these fields can be re-incarnated to accept PyObject*
slices similarly to the current mp_subscript and mp_ass_subscript.

Eli


More information about the Python-Dev mailing list