class_docstr: Custom property-like object (descriptor) for caching accessors.
  
  Parameters
  ----------
  name : str
      The namespace this will be accessed under, e.g. ``df.foo``
  accessor : cls
      The class with the extension methods. The class' __init__ method
      should expect one of a ``Series``, ``DataFrame`` or ``Index`` as
      the single argument ``data``
class_docstr_tok: ["Custom","property-like","object","(","descriptor",")","for","caching","accessors",".","Parameters","--","--","--","--","--","name",":","str","The","namespace","this","will","be","accessed","under",",","e.g",".","``","df.foo","``","accessor",":","cls","The","class","with","the","extension","methods",".","The","class","'","__init__","method","should","expect","one","of","a","``","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:
      # http://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
  import warnings
  import numpy
  import pandas
  from dask.dataframe._compat import check_to_pydatetime_deprecation
  from dask.utils import derived_from
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