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, is_dataclass
  from enum import Enum
  from typing import Any, ContextManager, Iterable, 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