Python Forum
Python classes and init method
Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python classes and init method
#1
Hi, I have to create  a Request class with suitable attributes to hold the request Id, password, name (first and surname), programme, year of study, campus location, module name and a list of available days (Monday …Sunday) and timeslots (morning, afternoon, evening). The user must be able to enter as many unique timeslots as they wish on a single request. I also have to use the __init method to accept a request ID passed from the calling object and allow the user to input the values for the other attributes. 

This is what I have so far...
class Request:

    def __init__(self, request_id, password, name, programme, year_of_study, campus_location, module_name,list_of_available_days):

        # This is creating methods within a class, and  defining what arguments we want to accept
        self.request_id = request_id  # Here I am setting the variables for the instance
        self.password = password
        self.name = name
        self.programme = programme
        self.year_of_study = year_of_study
        self.campus_location = campus_location
        self.module_name = module_name
        self.list_of_available_days = list_of_available_days
The problem is I don't know how to get user inputs like for example the request_id and so on. How do I go about doing that? Any help would be very much appreciated thank you.
Reply
#2
User input is usually done with the input function. I wouldn't think the request_id would be given by the user, I would have that set by the program. But a typical example would be:
self.name = input('Please enter your name: ')
The string passed as a parameter to the input function is the text prompt the user would see.

Also, please use Python tags around your code (https://python-forum.io/misc.php?action=help&hid=25), and don't use formatting tags for code (this is typically caused by cut and paste from an application doing the formatting. Try pasting to a plain text editor before cutting and pasting to the forum).
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#3
(Apr-02-2017, 07:28 PM)ichabod801 Wrote: User input is usually done with the input function. I wouldn't think the request_id would be given by the user, I would have that set by the program. But a typical example would be:
self.name = input('Please enter your name: ')
The string passed as a parameter to the input function is the text prompt the user would see.

Also, please use Python tags around your code (https://python-forum.io/misc.php?action=help&hid=25), and don't use formatting tags for code (this is typically caused by cut and paste from an application doing the formatting. Try pasting to a plain text editor before cutting and pasting to the forum).

Ok thanks for that! but the self.name=input('Please enter your name: ') does that go under all the code I have written?
Reply
#4
You could put it in the __init__ when you set the attributes, but I wouldn't recommend that. I would typically have a function that gets all the required input from the user, and then passes that to __init__ when the object is created.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#5
(Apr-02-2017, 07:36 PM)ichabod801 Wrote: You could put it in the __init__ when you set the attributes, but I wouldn't recommend that. I would typically have a function that gets all the required input from the user, and then passes that to __init__ when the object is created.

This is what I have so far but every time I go to run the program it doesn't run?
class Request:

    def __init__(self, request_id, password, name, programme, year_of_study, campus_location, module_name,
                list_of_available_days):
        # This is creating methods within a class, and  defining what arguments we want to accept

        self.request_id = request_id  # Here I am setting the variables for the instance
        self.password = password
        self.name = name
        self.programme = programme
        self.year_of_study = year_of_study
        self.campus_location = campus_location
        self.module_name = module_name
        self.list_of_available_days = list_of_available_days

        self.request_id = input('What is your ID? ')
        self.password = input('What is your password? ')
        self.name = input('What is your name? ')
        self.programme = input("What is your programme? ")
        self.year_of_study = input ('What year are you currently in?')
        self.campus_location = input('What is your campus location?')
        self.module_name = input ('What is your module name')
        self.list_of_available_days = input('Can you list the days that you are available?')
Moderator sparkz_alot:
Once again, use code tags when posting code. Refer to the Help Doc
Reply
#6
Hello! Get rid of 

        self.request_id = request_id  # Here I am setting the variables for the instance
        self.password = password
        self.name = name
        self.programme = programme
        self.year_of_study = year_of_study
        self.campus_location = campus_location
        self.module_name = module_name
        self.list_of_available_days = list_of_available_days
I am so tired that I can't even think about something else.
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#7
(Apr-02-2017, 07:57 PM)wavic Wrote: Hello! Get rid of 

        self.request_id = request_id  # Here I am setting the variables for the instance
        self.password = password
        self.name = name
        self.programme = programme
        self.year_of_study = year_of_study
        self.campus_location = campus_location
        self.module_name = module_name
        self.list_of_available_days = list_of_available_days
Every time I run the program I get this error message "Process finished with exit code 0"
Reply
#8
If you on Linux or I think Mac too that means without errors.
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#9
The code is only ever going to run if you make an instance:
req = Request()
Note that the above won't work unless you get rid of all the parameters to __init__ as well as the code wavic recommended getting rid of.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#10
As @ichabod801 said, your code is only a definition of a class. You have to create an instance to this class in order to use it. As he did.
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Python networking vs classes blackknite 4 2,818 Oct-15-2018, 02:44 PM
Last Post: blackknite

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020