class_docstr: Data Descriptor class for _pred that resets ``pred`` cached_property when needed
  
  This assumes that the ``cached_property`` ``G.pred`` should be reset whenever
  ``G._pred`` is set to a new value.
  
  This object sits on a class and ensures that any instance of that
  class clears its cached property "pred" whenever the underlying
  instance attribute "_pred" is set to a new object. It only affects
  the set process of the obj._pred attribute. All get/del operations
  act as they normally would.
  
  For info on Data Descriptors see: https://docs.python.org/3/howto/descriptor.html
code: def __set__(self, obj, value):
      od = obj.__dict__
      od["_pred"] = value
      if "pred" in od:
          del od["pred"]
  
imports: from copy import deepcopy
  from functools import cached_property
  import networkx
  from networkx import convert
  from networkx.classes.coreviews import AdjacencyView
  from networkx.classes.graph import Graph
  from networkx.classes.reportviews import DiDegreeView, InDegreeView, InEdgeView, OutDegreeView, OutEdgeView
  from networkx.exception import NetworkXError
label_desc: Use image node_id 1 for calling the _CachedPropertyResetterPred obj's underlying member method code with example usage: obj.__set__(obj, value) without return types