[issue21598] Is __getitem__ and __len__ implementations enough to make a user-defined class sliceable?

2014-05-28 Thread Santoso Wijaya

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



[issue21598] Is __getitem__ and __len__ implementations enough to make a user-defined class sliceable?

2014-05-28 Thread Santoso Wijaya

Santoso Wijaya added the comment:

Hm. The docstring for __getitem__ doesn't mention it can/should be accepting 
slice object as argument. That's what I'm missing. Doc patch?

--

___
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



[issue21598] Is __getitem__ and __len__ implementations enough to make a user-defined class sliceable?

2014-05-28 Thread Santoso Wijaya

Changes by Santoso Wijaya santoso.wij...@gmail.com:


--
resolution:  - not a bug
status: open - closed

___
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