def table(self, name=DEFAULT_TABLE, **options):
        """
        Get access to a specific table.

        Creates a new table, if it hasn't been created before, otherwise it
        returns the cached :class:`~tinydb.Table` object.

        :param name: The name of the table.
        :type name: str
        :param cache_size: How many query results to cache.
        :param table_class: Which table class to use.
        """

        if name in self._table_cache:
            return self._table_cache[name]

        table_class = options.pop('table_class', self._cls_table)
        table = table_class(self._cls_storage_proxy(self._storage, name), name, **options)

        self._table_cache[name] = table

        return table