code: def __str__(self):
      my_str = "Hyperparameter: %s " % self.name
      if self.index is not None:
          my_str += "Index: %s " % self.index
      if self.values is not None:
          my_str += "Value: %s " % self.values
      if self.min_range is not None:
          my_str += "Min range: %s " % self.min_range
      if self.max_range is not None:
          my_str += "Max range: %s " % self.max_range
      if self.array_length is not None:
          my_str += "Array length: %s " % self.array_length
      if self.unbounded is not None:
          my_str += "Unbounded: %s " % self.unbounded
      if self.is_log is not None:
          my_str += "Log scale: %s " % self.is_log
      if self.rand_init is not None:
          my_str += "Rand init: %s " % self.rand_init
      return my_str
  
file_path: studio/studio/hyperparameter.py
imports: import itertools
  import math
  import numpy
label_desc: Use image node_id 3 for calling the Hyperparameter obj's underlying member method code with example usage: obj.__str__() and returns: my_str