title: Python Object won't re-instantiate properly - keeping previous attributes
body: <p>I have a multiple jobs that run in batches.  Batches run at certain times.  I want the jobs in the batches to only run if certain criteria is met.  For this I have condition functions.  Example new data is available or a dependent job has run. My Batch object is will not recognize the change in the condition.  Which makes me think in is not re-instantiating.  I'm interested in what I'm misunderstanding about python here and how to properly remedy the issue.</p>
  
  <p>I have attempted to move the functions inside and outside of the batch_runner function without success.</p>
  
  <pre><code>class Batch():
  
      def __init__(self,jobs):
          self.job_dict = jobs
          self.job_keys = sorted([key for key in jobs],reverse=False)
  
      def run(self):
          for jb_nm in self.job_keys:
              if all(self.job_dict[jb_nm][1]):
                  print('Batch Oject Evaluates to:',all(self.job_dict[jb_nm][1]))
                  self.job_dict[jb_nm][0]()
              else:
                  print('Batch Object Evaluates to False')
  
  
  def job1():
      print('did job 1')
  
  def job_condition(test):
      print("job_condition evaluates to:",test==1)
      return test==1
  
  def batch_runner(test,reset):
      import schedule
      from datetime import datetime
      import time
      print('restart: Test =',test)
      batch1 = Batch(
          {
              1:[job1,[job_condition(test)]],
              #2:[job2,[business_day()]],
              #3:[job3,[file_exits()]]
          }
      ) 
      schedule.every(10).seconds.do(batch1.run)
      schedule.jobs
  
      while datetime.today().strftime('%M') == reset:
          schedule.run_pending()
          time.sleep(1)
  
  from datetime import datetime
  test = 0 # change to another number to view object eval to False
  while True:
      test+=1
      reset = datetime.today().strftime('%M')
      batch_runner(test,reset)
  </code></pre>