<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_type(self, namespace=None, identifier=None, authority=None):
 """Gets a Type by its string representation which is a combination of the authority and identifier. This method only returns the Type if it is known by the given identification components. arg: namespace (string):
 the identifier namespace arg: identifier (string):
 the identifier arg: authority (string):
 the authority return: (osid.type.Type) - the Type raise: NotFound - the type is not found raise: NullArgument - null argument provided raise: OperationFailed - unable to complete request raise: PermissionDenied - authorization failure compliance: mandatory - This method must be implemented. """

        from . import types
        from ..osid.osid_errors import NotFound, NullArgument
        if namespace is None or identifier is None or authority is None:
            raise NullArgument()
        type_identifier = namespace + '%3A' + identifier + '%40' + authority
        url_path = '/handcar/services/learning/types/' + type_identifier
        try:
            result = self._get_request(url_path)
        except NotFound:
            result = None
            for t in types.TYPES:
                if t['id'] == type_identifier:
                    result = t
            if result is None:
                raise NotFound()
        return Type(result)