Method(s) called by square brackets, slice objects
Terry Reedy
tjreedy at udel.edu
Thu Apr 10 18:20:22 EDT 2014
On 4/10/2014 2:52 PM, John Ladasky wrote:
> Thanks to both Ethan and Steven for their replies.
>
> Steven: I was trying to use the interpreter and wasn't getting results that I understood -- because I didn't know that __getslice__ was simply gone in Python 3. I implemented a __getslice__ method in my subclass that never got called.
>
> Ethan: I saw that slice objects were being sent to __getitem__, but that confused me as I thought that its purpose, as implied by the method name, was to return a SINGLE item.
A slice is a single sequence object. Sequences can result from any of
index lookup, key lookup, or slicings.
The backstory is that slicing originally supported only start and stop
positions. The 3 __xyzslice__ had separate start and stop parameters
instead of the 1 index/key parameter of __xyzitem__. Strides and the
slice class were introduced for the benefit of numerical python. When
they were 'mainstreamed' into regular python, the __xyzslice__ methods
were deprecated (in 2.0) as a single slice object can just as well be
passed to __xyzitem__.
--
Terry Jan Reedy
More information about the Python-list
mailing list