def get_resource(self, service_name, resource_name, base_class=None):
        """
        Retrieves a resource class from the cache, if available.

        :param service_name: The service a given ``Resource`` talks to. Ex.
            ``sqs``, ``sns``, ``dynamodb``, etc.
        :type service_name: string

        :param resource_name: The name of the ``Resource``. Ex.
            ``Queue``, ``Notification``, ``Table``, etc.
        :type resource_name: string

        :param base_class: (Optional) The base class of the object. Prevents
            "magically" loading the wrong class (one with a different base).
            Default is ``default``.
        :type base_class: class

        :returns: A <kotocore.resources.Resource> subclass
        """
        classpath = self.build_classpath(base_class)
        service = self.services.get(service_name, {})
        resources = service.get('resources', {})
        resource_options = resources.get(resource_name, {})
        resource_class = resource_options.get(classpath, None)

        if not resource_class:
            msg = "Resource '{0}' for {1} is not present in the cache."
            raise NotCached(msg.format(
                resource_name,
                service_name
            ))

        return resource_class
Retrieves a resource class from the cache, if available.

        :param service_name: The service a given ``Resource`` talks to. Ex.
            ``sqs``, ``sns``, ``dynamodb``, etc.
        :type service_name: string

        :param resource_name: The name of the ``Resource``. Ex.
            ``Queue``, ``Notification``, ``Table``, etc.
        :type resource_name: string

        :param base_class: (Optional) The base class of the object. Prevents
            "magically" loading the wrong class (one with a different base).
            Default is ``default``.
        :type base_class: class

        :returns: A <kotocore.resources.Resource> subclass