class UserListSubclass(list): def __getslice__(self, i, j): return self.__getitem__(slice(i, j)) def __setslice__(self, i, j, seq): return self.__setitem__(slice(i, j), seq) def __delslice__(self, i, j): return self.__delitem__(slice(i, j)) # Subclass this class if you need to overwrite __getitem__ and have it called # when accessing slices. # If you subclass list directly, __getitem__ won't get called when accessing # slices as in mylist[2:4].