class_docstr: A discrete action exploration policy.
docstr: Given a list of values corresponding to each action,
  choose one actions according to the exploration policy
  :param action_values: A list of action values
  :return: The chosen action,
           The probabilities of actions to select from (if not available a one-hot vector)
docstr_tok: ["Given","a","list","of","values","corresponding","to","each","action",",","choose","one","actions","according","to","the","exploration","policy",":","param","action_values",":","A","list","of","action","values",":","return",":","The","chosen","action",",","The","probabilities","of","actions","to","select","from","(","if","not","available","a","one-hot","vector",")"]
code: def get_action(
      self, action_values: List[ActionType]
  ) -> (ActionType, List):
      """
      Given a list of values corresponding to each action,
      choose one actions according to the exploration policy
      :param action_values: A list of action values
      :return: The chosen action,
               The probabilities of actions to select from (if not available a one-hot vector)
      """
      if self.__class__ == ExplorationPolicy:
          raise ValueError(
              "The ExplorationPolicy class is an abstract class and should not be used directly. "
              "Please set the exploration parameters to point to an inheriting class like EGreedy or "
              "AdditiveNoise"
          )
      else:
          raise ValueError(
              "The get_action function should be overridden in the inheriting exploration class"
          )
  
imports: from typing import List
  from rl_coach.base_parameters import Parameters
  from rl_coach.core_types import RunPhase, ActionType
  from rl_coach.spaces import ActionSpace, DiscreteActionSpace, BoxActionSpace, GoalsSpace
label_desc: Use image node_id 2 for calling the DiscreteActionExplorationPolicy obj's underlying member method code with example usage: obj.get_action(action_values) without return types