title: unbound method must be called with instance as first argument - python
body: <p>I keep on receiving the error: <code>TypeError: unbound method get_num_students() must be called with Student instance as first argument (got nothing instead)</code></p>
  
  <p>Here is the code:</p>
  
  <pre><code>class Student(object):
      num_students = 0
      num_grad_2013 = 0
  
      def __init__(self, first_name, last_name, id_num, yr_of_grad, counselor):
          self = self
          self.first_name = first_name
          self.last_name = last_name
          self.id_num = int(id_num)
          self.yr_of_grad = int(yr_of_grad)
          self.counselor = counselor
  
      def to_string(first_name, last_name, id_num, yr_of_grad, counselor):
          print first_name
          print last_name
          print id_num
          print yr_of_grad
          print counselor
  
  
      def move():
          num_students -= 1
          if yr_of_grad == 12:
              num_grad_2013 -= 1
          else:
              None
          print "Student with ID number: %s has moved." % (id_num)
  
      def grad_early():
          num_students -= 1
          num_grad_2013 -= 1
          print "Student with ID number: %s is graduating early." % (id_num)
  
      def get_num_students():
          print "There are %s students in this school." % (num_students)
  
      def get_grad_2013():
          print "There are %s students graduating this year." % (num_grad_2013)
  
  def main():
      print "Creating student Nathan Lindquist" 
      nathan = Student("Nathan", "Lindquist", 11111, 2014, "Iverson")
      print nathan 
      print "Creating student Dylan Schlact" 
      dylan = Student("Dylan", "Schlact", 22222, 2012, "Greene") 
      print dylan 
      print "Creating student Matt Gizzo" 
      matt = Student("Matt", "Gizzo", 33333, 2013, "Connor") 
      print matt 
      # so number of students is 3, one is graduating in 2013 
      Student.get_num_students() 
      Student.get_grad_2013() 
       # change some things! 
      nathan.grad_early() 
      print nathan 
      matt.move() 
      #matt.grad_early() 
      #print matt 
      # so number of students is 2, one is graduating in 2013 
      Student.get_num_students() 
      Student.get_grad_2013()
      return
  </code></pre>
  
  <p>Here is the Python output:</p>
  
  <pre><code>&gt;&gt;&gt; main()
  Creating student Nathan Lindquist
  &lt;__main__.Student object at 0x03065430&gt;
  Creating student Dylan Schlact
  &lt;__main__.Student object at 0x030653B0&gt;
  Creating student Matt Gizzo
  &lt;__main__.Student object at 0x030653D0&gt;
  
  Traceback (most recent call last):
    File "&lt;pyshell#8&gt;", line 1, in &lt;module&gt;
      main()
    File "C:\Users\admin\Desktop\Python\student.py", line 51, in main
      Student.get_num_students()
  TypeError: unbound method get_num_students() must be called with Student instance as first argument (got nothing instead)
  </code></pre>
  
  <p>Also, if somebody could give me help with it printing the student as a space in memory, I would also appreciate it.</p>