title: Having trouble with the self parameter
body: <p>I am working on a small project and I am not sure if the error I am getting is due to the IDLE I am using or something I am doing wrong. </p>
  
  <p>I am using OOP in python running on the Wing IDLE. I have the latest version of the python shell running on a Windows 8 PC. </p>
  
  <p>In my program I have a method that takes user input and using that input it creates the parameters required to create a shelf.  </p>
  
  <pre><code>'def subject_creator(self): 
      subject_name = input("Enter the subject name:") 
      subject_file = subject_name + "file"  
      name = subject_name 
      return subject_name, subject_file, name' 
  </code></pre>
  
  <p>Ideally the program would then use the three returned statements namely subject_name, subject_file, and name  in opening the new shelf.  </p>
  
  <pre><code> 'def __init__(self, subject_name,  subject_file, name ): 
      subject_name = shelve.open ("subject_file", "c") 
      self.name = name  
      print("The", self.name ,"note has been created")' 
  
   while True:
      print ("""
      1.Create new note
      2.Add new term 
      3.Look up term 
      4.Exit/Quit
      """)
      ans=  input("What would you like to do?: ") 
      if ans=="1":  
              subject_creator() 
              note = Notebook(subject_name, subject_file, name) 
              subject_name.sync() 
  </code></pre>
  
  <p>However when I run the program and in my main menu I select choice 1 which runs the code above, I receive and error that states.  </p>
  
  <pre><code>&lt;module&gt;
  builtins.TypeError: subject_creator() missing 1 required positional argument: 'self' 
  </code></pre>
  
  <p>This is somewhat puzzling as I include the self parameter when I wrote the code for subject creator as shown above. Other than this I have no other errors. </p>
  
  <p>Any feedback would be greatly appreciated.  </p>