class_docstr: Custom property-like object.
  
  A descriptor for caching accessors.
  
  Parameters
  ----------
  name : str
      Namespace that will be accessed under, e.g. ``df.foo``.
  accessor : cls
      Class with the extension methods.
  
  Notes
  -----
  For accessor, The class's __init__ method assumes that one of
  ``Series``, ``DataFrame`` or ``Index`` as the
  single argument ``data``.
code: def __get__(self, obj, cls):
      if obj is None:
          # we're accessing the attribute of the class, i.e., Dataset.geo
          return self._accessor
      accessor_obj = self._accessor(obj)
      # Replace the property with the accessor object. Inspired by:
      # https://www.pydanny.com/cached-property.html
      # We need to use object.__setattr__ because we overwrite __setattr__ on
      # NDFrame
      object.__setattr__(obj, self._name, accessor_obj)
      return accessor_obj
  
imports: from __future__ import annotations
  from typing import Callable, final
  import warnings
  from pandas.util._decorators import doc
  from pandas.util._exceptions import find_stack_level
label_desc: Use image node_id 2 for calling the CachedAccessor obj's underlying member method code with example usage: obj.__get__(obj, cls) and returns: accessor_obj, self