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