def __getitem__(self, index):
    """
    Retrieve a field or slice of fields from the record using an index.

    Args:
        index: int or slice object
            Index can be an integer or slice object for normal sequence
            item access.
    Returns:
        If index is an integer the value of the field corresponding to
        the index is returned. If index is a slice a list of field values
        corresponding to the slice indices is returned.
    """
    if isinstance(index, int):
        return self._attr_getters[index](self)
    # Slice object
    return [getter(self) for getter in self._attr_getters[index]]