code: def get_vars(self):
      
  
      # Catch eager execution and assert function overload.
      try:
        if tf.executing_eagerly():
          raise NotImplementedError("For Eager execution - get_vars "
                                    "must be overridden.")
      except AttributeError:
        pass
  
      done = False
      tried_to_make_params = False
      while not done:
        # Most models in cleverhans use only trainable variables and do not
        # make sure the other collections are updated correctly.
        trainable_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                           self.scope + "/")
        # When wrapping other code, such as the CIFAR 10 challenge models,
        # we need to make sure we get the batch norm running averages as well
        # as the trainable variables.
        model_vars = tf.get_collection(tf.GraphKeys.MODEL_VARIABLES,
                                       self.scope + "/")
        scope_vars = ordered_union(trainable_vars, model_vars)
  
        if len(scope_vars) > 0:
          done = True
        else:
          assert not tried_to_make_params
          tried_to_make_params = True
          self.make_params()
  
      # Make sure no variables have been added or removed
      if hasattr(self, "num_vars"):
        assert self.num_vars == len(scope_vars)
      else:
        self.num_vars = len(scope_vars)
  
      return scope_vars
docs: Provides access to the model's Variables.
      This may include Variables that are not parameters, such as batch
      norm running moments.
      :return: A list of all Variables defining the model.