class_docstr: Descriptor that mimics @property but caches output in member variable.
  
  From tensorflow_datasets
  
  Built-in in functools from Python 3.8.
class_docstr_tok: ["Descriptor","that","mimics","@","property","but","caches","output","in","member","variable",".","From","tensorflow_datasets","Built-in","in","functools","from","Python","3.8","."]
code: def __get__(self, obj, objtype=None):
      # See docs.python.org/3/howto/descriptor.html#properties
      if obj is None:
          return self
      if self.fget is None:
          raise AttributeError("unreadable attribute")
      attr = "__cached_" + self.fget.__name__
      cached = getattr(obj, attr, None)
      if cached is None:
          cached = self.fget(obj)
          setattr(obj, attr, cached)
      return cached
  
imports: import inspect
  import tempfile
  from collections import OrderedDict, UserDict
  from collections.abc import MutableMapping
  from contextlib import ExitStack, contextmanager
  from dataclasses import fields
  from enum import Enum
  from typing import Any, ContextManager, List, Tuple
  import numpy
  from .import_utils import is_flax_available, is_tf_available, is_torch_available, is_torch_fx_proxy
label_desc: Use image node_id 1 for calling the cached_property obj's underlying member method code with example usage: obj.__get__(obj, objtype) and returns: cached, self