New submission from Santoso Wijaya:
The reference doc for Python data model says that __getslice__ is deprecated
[1], and that __getitem__ should be used instead:
Deprecated since version 2.0: Support slice objects as parameters to the
__getitem__() method. (However, built-in types in CPython currently still
implement __getslice__(). Therefore, you have to override it in derived classes
when implementing slicing.)
But I'm getting the following behavior when I try it myself. Is there something
I'm missing?
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type help, copyright, credits or license for more information.
class tup(object):
... def __getitem__(self, i):
... if i == 0: return 0
... if i == 1: return 1
...
KeyboardInterrupt
class tup(object):
... def __getitem__(self, i):
... if i in (0, 1): return i
... else: raise IndexError()
... def __len__(self):
... return 2
...
t = tup()
len(t)
2
t[0], t[1]
(0, 1)
t[:2]
Traceback (most recent call last):
File stdin, line 1, in module
File stdin, line 4, in __getitem__
IndexError
t[:1]
Traceback (most recent call last):
File stdin, line 1, in module
File stdin, line 4, in __getitem__
IndexError
[1] https://docs.python.org/2/reference/datamodel.html#object.__getslice__
--
components: Library (Lib)
messages: 219326
nosy: santa4nt
priority: normal
severity: normal
status: open
title: Is __getitem__ and __len__ implementations enough to make a user-defined
class sliceable?
type: behavior
versions: Python 2.7
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21598
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com