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.
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.
In my program I have a method that takes user input and using that input it creates the parameters required to create a shelf.
'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' 
Ideally the program would then use the three returned statements namely subject_name, subject_file, and name in opening the new shelf.
 '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() 
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.
<module>
builtins.TypeError: subject_creator() missing 1 required positional argument: 'self' 
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.
Any feedback would be greatly appreciated.
 
     
     
    