class_docstr: Helper Object for converting CLI arguments (or SageMaker hyperparameters)
  into Coach configuration.
docstr: Sets a property on obj to val, or to a sub-object within obj if key looks like "foo.bar" 
docstr_tok: ["Sets","a","property","on","obj","to","val",",","or","to","a","sub-object","within","obj","if","key","looks","like","``","foo.bar","''"]
code: def _set_rl_property_value(self, obj, key, val, path=""):
      """Sets a property on obj to val, or to a sub-object within obj if key looks like "foo.bar" """
      if key.find(".") >= 0:
          top_key, sub_keys = key_list = key.split(".", 1)
          if top_key.startswith("__"):
              raise ValueError(
                  "Attempting to set unsafe property name %s" % top_key
              )
          if isinstance(obj, dict):
              sub_obj = obj[top_key]
          else:
              sub_obj = obj.__dict__[top_key]
          # Recurse
          return self._set_rl_property_value(
              sub_obj, sub_keys, val, "%s.%s" % (path, top_key)
          )
      else:
          key, val = self._parse_type(key, val)
          if key.startswith("__"):
              raise ValueError(
                  "Attempting to set unsafe property name %s" % key
              )
          if isinstance(obj, dict):
              obj[key] = val
          else:
              obj.__dict__[key] = val
  
file_path: sagemaker-python-sdk/tests/data/sagemaker_rl/configuration_list.py
imports: import logging
label_desc: Use image node_id 4 for calling the ConfigurationList obj's underlying member method code with example usage: obj._set_rl_property_value(obj, key, val, path) and returns: self