<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get(self, path, default=None, check_type=None, module_name=None):
 """ Get option property :param path: full path to the property with name :param default: default value if original is not present :param check_type: cast param to passed type, if fail, default will returned :param module_name: get property from module name :return: """

    if self._json is not None:
      # process whole json or just concrete module
      node = self._json if module_name is None else self.get_module_config(module_name)
      path_data = path.split('.')
      try:
        while len(path_data) > 0:
          node = node[path_data.pop(0)]

        if check_type is not None:
          return check_type(node)
        else:
          return node
      except KeyError:
        if default is not None:
          return default
        else:
          raise KeyError("Key {} not present".format(path))
      except ValueError:
        if default is not None:
          return default
        else:
          raise KeyError("Key {} has a wrong format".format(path))
    else:
      return ""