code: def __setattr__(self, key, value):
      if key.startswith("_"):
          self.__dict__[key] = value
      elif key in self.__types:
          if key in self.__cached:
              raise ValueError(
                  f"Cannot set {self.__class__.__name__}:{key} after it was accessed"
              )
          self.__values[key] = value
      else:
          raise AttributeError(
              f"{self.__class__.__name__} has no annotation for attribute '{key}'"
          )
  
imports: import types
  import warnings
  from collections import OrderedDict
  from typing import Dict, List, Callable, Union, Tuple, Optional, Type, Set, Iterable, Any
  from .config_function import ConfigFunction
  from .config_item import ConfigItem
  from .eval_function import EvalFunction
  from .utils import Value
  from ...None import monit
label_desc: Use image node_id 7 for calling the Configs obj's underlying member method code with example usage: obj.__setattr__(key, value) without return types