def __init__(
        self,
        estimator: "PYTORCH_OBJECT_DETECTOR_TYPE",
        candidates: list,
        collector: Callable,
        eps: float,
        max_iter: int,
        num_grid: int,
    ) -> None:
        """
        Create a SNAL attack instance.

        :param estimator: A trained YOLOv8 model or other models with the same output format
        :param candidates: The collected patches to generate perturbations.
        :param collector: A callable uses to generate patches.
        :param eps: Maximum perturbation that the attacker can introduce.
        :param max_iter: The maximum number of iterations.
        :param num_grid: The number of grids for width and high dimension.
        """
        super().__init__(estimator=estimator)
        self.eps = eps
        self.max_iter = max_iter
        self.num_grid = num_grid
        self.batch_size = 1
        self.candidates = candidates
        self.threshold_objs = 1  # the expect number of objects
        self.collector = collector
        self._check_params()

        Create a SNAL attack instance.

        :param estimator: A trained YOLOv8 model or other models with the same output format
        :param candidates: The collected patches to generate perturbations.
        :param collector: A callable uses to generate patches.
        :param eps: Maximum perturbation that the attacker can introduce.
        :param max_iter: The maximum number of iterations.
        :param num_grid: The number of grids for width and high dimension.
        
art/attacks/evasion/steal_now_attack_later/steal_now_attack_later.py