<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def errors(self):
 """A dictionary of error objects, keyed on the name of the request field that was invalid. Each error value has `field`, `symbol`, and `message` attributes describing the particular invalidity of that field. """

        try:
            return self.__dict__['errors']
        except KeyError:
            pass

        suberrors = dict()
        for err in self.response_doc.findall('error'):
            field = err.attrib['field']
            symbol = err.attrib['symbol']
            message = err.text
            sub_err = self.Suberror(field, symbol, message)

            # If the field exists, we need to turn the suberror
            # into a list of suberrors
            if field in suberrors:
                if type(suberrors[field]) != list:
                    suberrors[field] = [suberrors[field]]
                suberrors[field].append(sub_err)
            else:
                suberrors[field] = sub_err

        self.__dict__['errors'] = suberrors
        return suberrors