title: Unbound method error
body: <p>I'm trying to understand the <code>self</code> keyword in python classes. Ergo I made up a simple class:</p>
  
  <pre><code>class Question(object):
      """A class for answering my OO questions about python.
  
         attributes: a_number"""
  
      def __init__():
          print "You've initialized a Question!"
  
      def myself_add(self, new_number):
          self.a_number += new_number
  </code></pre>
  
  <p>And in a <code>__main__</code> function below the class definition I'm running the code</p>
  
  <pre><code>my_q = Question
  print my_q
  my_q.a_number = 12
  print 'A number:',my_q.a_number
  my_q.myself_add(3)
  print 'A number:',my_q.a_number
  </code></pre>
  
  <p>The result I'm getting (including error) is</p>
  
  <pre><code>&lt;class '__main__.Question'&gt;
  A number: 12
  Traceback (most recent call last):
    File "question.py", line 21, in &lt;module&gt;
      my_q.myself_add(3)
  TypeError: unbound method myself_add() must be called with Question instance as first argument (got int instance instead)
  </code></pre>
  
  <p>I'm trying to understand why the method <code>myself_add</code> is considered unbound. What does that mean? And why doesn't it know that I'm calling it on an instance of the <code>Question</code> class? Also, why doesn't my <code>__init__</code> print happen?</p>