Rationale behind the deprecation of __getslice__?
Steven Bethard
steven.bethard at gmail.com
Thu Dec 9 18:37:57 EST 2004
Carl Banks wrote:
> As for why list objects still use getslice--they probably shouldn't.
> I'd file a bug report.
I'm not convinced this is actually a bug; it works just like the docs
promise:
------------------------------------------------------------
http://docs.python.org/ref/sequence-methods.html
__getslice__( self, i, j)
...
Called to implement evaluation of self[i:j].
...
If no __getslice__() is found, a slice object is created instead, and
passed to __getitem__() instead.
...
For slice operations involving extended slice notation, or in absence of
the slice methods, __getitem__(), __setitem__() or __delitem__() is
called with a slice object as argument.
------------------------------------------------------------
So the docs imply that if __getslice__ exists, it will be used before
trying __getitem__. Since list defines __getslice__, list.__getslice__
will be used before __getitem__ in any class that inherits from list.
This is certainly a wart though. I'd love to see list.__getslice__
removed, leaving only list.__getitem__, but I suspect that this kind of
backwards-incompatible change would be frowned on...
Guess we could file a feature request?
Steve
More information about the Python-list
mailing list