title: Self references several different objects instead of one
body: <p>I have a class with a method that creates schedules (it is simplified for the sake of, well, simplicity):</p>
  
  <pre><code>def create_schedule(self):
      # Create a function-1 event
      scheduler.add_job(self.function_1,
                        trigger='date',
                        run_date=datetime_1,
                        args=[self])
  
      # Create a function-2 event
      scheduler.add_job(self.function_2,
                        trigger='date',
                        run_date=datetime_2,
                        args=[self])
  </code></pre>
  
  <p>And these are the class <code>function_1</code> and <code>function_2</code> methods:</p>
  
  <pre><code>def function_1(self, *args):
      print('self in function_1:', self)
  
  def function_2(self, *args):
      print('self in function_2:', self)
  </code></pre>
  
  <p>For some reason, when it executes both events from the scheduler, the following is printed:</p>
  
  <pre><code>self in function_1: &lt;program.my_class object at 0x6f03e430&gt;
  self in function_2: &lt;program.my_class object at 0x6f03e4b0&gt;
  </code></pre>
  
  <p>i.e. the two are different objects, and thus changes made by <code>function_1</code> will not appear in <code>function_2</code> and vice-versa.</p>
  
  <p>Why is that? Shouldn't all instances pointed by <code>self</code> be the same? Is there a way to circumvent this and force all <code>self</code>s to actually point at the same instance?</p>