'Collects the sliced attributes and passes them back as `dict`.
It passes uncertainty, mask and wcs to their appropriate ``_slice_*``
method, while ``meta`` and ``unit`` are simply taken from the original.
The data is assumed to be sliceable and is sliced directly.
When possible the return should *not* be a copy of the data but a
reference.
Parameters
item : slice
The slice passed to ``__getitem__``.
Returns
dict :
Containing all the attributes after slicing - ready to
use them to create ``self.__class__.__init__(**kwargs)`` in
``__getitem__``.'

def _slice(self, item):

    kwargs = {}
    kwargs[u'data'] = self.data[item]
    kwargs[u'uncertainty'] = self._slice_uncertainty(item)
    kwargs[u'mask'] = self._slice_mask(item)
    kwargs[u'wcs'] = self._slice_wcs(item)
    kwargs[u'unit'] = self.unit
    kwargs[u'meta'] = self.meta
    return kwargs
