'Get the value for a field. Raise a KeyError if the field is
not available.'

def __getitem__(self, key):

    getters = self._getters()
    if (key in getters):
        return getters[key](self)
    elif (key in self._fields):
        return self._values_fixed.get(key)
    elif (key in self._values_flex):
        return self._values_flex[key]
    else:
        raise KeyError(key)
