# __getitem__() doesn't capture all slices if class inherits from list, # tuple or str class ObjectClass(object): def __getitem__(self, key): print '%s.__getitem__(self, %s)' % (self.__class__.__name__, key) class ListClass(list): def __getitem__(self, key): print '%s.__getitem__(self, %s)' % (self.__class__.__name__, key) for obj in [ObjectClass(), ListClass()]: obj[0] obj[:1] obj[1:3] obj[2:3:1] obj[2:] print # PLEASE NOTE: it appears # class ListClass(list) # class TupleClass(tuple) # class StrClass(str) # all have the same behavoir # # Script started on Sun Jul 27 21:19:03 2008 # $ python getitem_problem.py # # ObjectClass.__getitem__(self, 0) # ObjectClass.__getitem__(self, slice(None, 1, None)) # ObjectClass.__getitem__(self, slice(1, 3, None)) # ObjectClass.__getitem__(self, slice(2, 3, 1)) # ObjectClass.__getitem__(self, slice(2, None, None)) # # ListClass.__getitem__(self, 0) # ListClass.__getitem__(self, slice(2, 3, 1)) # # $ exit # exit # # Script done on Sun Jul 27 21:19:27 2008