class_docstr: Implementation of the attack from Moosavi-Dezfooli et al. (2016). Computes a fixed perturbation to be applied to all
  future inputs. To this end, it can use any adversarial attack method.
  
  | Paper link: https://arxiv.org/abs/1610.08401
class_docstr_tok: ["Implementation","of","the","attack","from","Moosavi-Dezfooli","et","al",".","(","2016",")",".","Computes","a","fixed","perturbation","to","be","applied","to","all","future","inputs",".","To","this","end",",","it","can","use","any","adversarial","attack","method",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/1610.08401"]
docstr: Get an attack object from its name.
  
  :param a_name: Attack name.
  :param params: Attack params.
  :return: Attack object.
  :raises NotImplementedError: If the attack is not supported.
docstr_tok: ["Get","an","attack","object","from","its","name",".",":","param","a_name",":","Attack","name",".",":","param","params",":","Attack","params",".",":","return",":","Attack","object",".",":","raises","NotImplementedError",":","If","the","attack","is","not","supported","."]
code: def _get_attack(
      self, a_name: str, params: Optional[Dict[str, Any]] = None
  ) -> EvasionAttack:
      """
      Get an attack object from its name.
  
      :param a_name: Attack name.
      :param params: Attack params.
      :return: Attack object.
      :raises NotImplementedError: If the attack is not supported.
      """
      try:
          attack_class = self._get_class(self.attacks_dict[a_name])
          a_instance = attack_class(self.estimator)  # type: ignore
  
          if params:
              a_instance.set_params(**params)
  
          return a_instance
      except KeyError:
          raise NotImplementedError(
              f"{a_name} attack not supported"
          ) from KeyError
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import random
  import types
  from typing import Any, Dict, Optional, Union, TYPE_CHECKING
  import numpy
  from tqdm.auto import tqdm
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import projection, get_labels_np_array, check_and_transform_label_format
label_desc: Use image node_id 6 for calling the UniversalPerturbation obj's underlying member method code with example usage: obj._get_attack(a_name, params) and returns: a_instance