2016-12-16 3 views
0

Я пытаюсь создать простой опрос, создав класс и создав его экземпляр в другом файле. Моя проблема в том, что я получаю сообщение об ошибке, которое говорит, что моя переменная «вопрос» не определена, когда я четко определил ее в начале моей программы. Вот ошибка:Получение NameError: переменная не определена, когда она определена

line 11, in show_question print(question)/
    NameError: name 'question' is not defined 

Вот класс я Instancing:

class AnonymousSurvey(): 
    """Collect anonymous answers to a survey question.""" 

    def __init__(self, question): 
     """Store a question, and prepare to store responses.""" 
     self.question = question 
     self.responses = [] 

    def show_question(self): 
     """Show the survey question.""" 
     print(question) 

И вот код, я работаю с:

from survey import AnonymousSurvey 

# Define a question, and make a survey. 
question = "What language did you first learn to speak?" 
my_survey = AnonymousSurvey(question) 

# Show the question, and store responses to the question. 
my_survey.show_question() 
print("Enter 'q' at any time to quit.\n") 
while True: 
    response = input("Language: ") 
    if response == 'q': 
     break 
    my_survey.store_response(response) 

Я бегу питона v.3.5. 2

Если есть другие детали, которые, по вашему мнению, понадобятся, я буду рад предоставить их.

+0

должен ссылаться на 'question' через' self', т. Е. Использовать 'print (self.question)'. –

ответ

2

В этой функции. question не определен. Однако у вас есть self.question. question является локальным для функции __init__.

0
def show_question(self): 
    """Show the survey question.""" 
    print(self.question) 

В Python вам необходимо получить доступ к атрибуту экземпляра класса с помощью self.

+2

это атрибут экземпляра. а не классовое поле. –

+0

@ JimFasarakis-Hilliard да спасибо. Я не мог думать об этом, когда писал это – qwerty

Смежные вопросы