def __init__(
        self,
        classifier: "CLASSIFIER_NEURALNETWORK_TYPE",
        max_translation: float = 0.0,
        num_translations: int = 1,
        max_rotation: float = 0.0,
        num_rotations: int = 1,
        verbose: bool = True,
    ) -> None:
        """
        :param classifier: A trained classifier.
        :param max_translation: The maximum translation in any direction as percentage of image size. The value is
               expected to be in the range `[0, 100]`.
        :param num_translations: The number of translations to search on grid spacing per direction.
        :param max_rotation: The maximum rotation in either direction in degrees. The value is expected to be in the
               range `[0, 180]`.
        :param num_rotations: The number of rotations to search on grid spacing.
        :param verbose: Show progress bars.
        """
        super().__init__(estimator=classifier)
        self.max_translation = max_translation
        self.num_translations = num_translations
        self.max_rotation = max_rotation
        self.num_rotations = num_rotations
        self.verbose = verbose
        self._check_params()

        self.fooling_rate: float | None = None
        self.attack_trans_x: int | None = None
        self.attack_trans_y: int | None = None
        self.attack_rot: float | None = None

        :param classifier: A trained classifier.
        :param max_translation: The maximum translation in any direction as percentage of image size. The value is
               expected to be in the range `[0, 100]`.
        :param num_translations: The number of translations to search on grid spacing per direction.
        :param max_rotation: The maximum rotation in either direction in degrees. The value is expected to be in the
               range `[0, 180]`.
        :param num_rotations: The number of rotations to search on grid spacing.
        :param verbose: Show progress bars.
        
art/attacks/evasion/spatial_transformation.py