Я пытаюсь выполнить практическое задание, которое нашел в старой книге по программированию, чтобы расширить свои знания о классах на Python. Задача - создать программу, позволяющую пользователю настроить серию тестов для школы. Каждый тест должен содержать не более 10 вопросов. В задаче говорилось, что лучший способ сделать это - использовать локализацию и иметь класс «Вопрос» внутри класса «Тест».
По сути, я должен создать класс под названием Test, который раскрывает основы всего теста, а затем класс под названием Quesion, который задает вопрос и передает его обратно в Test, чтобы включить его в массив. У меня две серьезные проблемы. Во-первых, как получить объект setQuestion в классе Question для передачи данных в массив Question в классе Test. Во-вторых, как сделать так, чтобы объект setQuestion перебирал переменную numberofQuestions, поскольку она содержится в Test Class.
Вот код. Не уверен, что это ясно из форматирования, но класс Question находится внутри класса Test:
class Test(object):
def __init__(self):
self.__testID = 0
self.__maxMarks = 0
self.__questions = []
self.__numberofQuestions = 0
self.__level = ""
self.__dateSet = ""
class Question(object):
def __init__(self):
self.__questionID = 0
self.__questionText = ""
self.__answer = ""
self.__marks = 0
self.__topic = ""
def setQuestion(self, questionID, questionText, answer, marks, topic):
self.__numberofQuestions = self.__numberofQuestions + 1
self.__questionID = self.__questionID
self.__questionText = self.__questionText
self.__answer = self.__answer
self.__marks = self.__marks
self.__topic = self.__topic
1 ответ
Вот как я бы это сделал:
class Test(object):
def __init__(self,id,marks):
self.__testID = id
self.__maxMarks = marks
self.__questions = []
self.__numberofQuestions = 0
self.__level = ""
self.__dateSet = ""
def setQuestion(self,question):
self.__numberofQuestions += 1
self.__questions.append(question)
class Question(object):
def __init__(self,id,text,answer,marks,topic):
self.__questionID = id
self.__questionText = text
self.__answer = answer
self.__marks = marks
self.__topic = topic
Теперь вы можете поместить объекты вопросов в массив __question теста следующим образом:
if __name__ == "__main__":
test = Test(1,100)
test.setQuestion(Question(1,"Text","Answer",50,"Topic"))
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
self.__questionID = self.__questionID
, но это ничего не дает.Question
внутриTest
, но от этого мало пользы, и (опять же) это просто добавляет ненужной сложности коду. Как сказано в Википедии, сдерживание означает использование одного класса внутри другого, это не означает, что содержащийся класс должен быть определен внутри другого класса, он просто должен быть доступен для него.