I guess that conceptually it just felt natural to me to keep separate methods for dealing with a slice (get many elements out) and other types of indexing, which I tend to think of as 'scalar' indexing.
Yeah, I can see that a bit.
Ignoring dicts for the moment (and concerning ourselves only with "sequences"), you're probably right in thinking that that slice objects are the second most common thing to get in __getitem__ (second to ints of course). But there is heavy use of other objects in various other modules, most notably tuples in numarray:
>>> import numarray as na >>> a = na.arange(24, shape=(2, 3, 4)) >>> a array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]],
[[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]) >>> a[0,1,2] 6 >>> a[0,1] array([4, 5, 6, 7]) >>> a[...,3] array([[ 3, 7, 11], [15, 19, 23]]) >>> a[1,:,0] array([12, 16, 20])
Presumably the numarray code has to do quite a bit of type checking to perform all these slicings right (and I didn't even show you what happens when you use another array as an "index"). I'm not necessarily saying that all this type checking is a good thing, but because people will always find new things that they want to index by, adding __getxxx__ methods for each of the index types is probably not the right road to go down...
Steve -- http://mail.python.org/mailman/listinfo/python-list