Exercises : Consider the following class diagram and the definition of question class in a module named "questions" and the definition of class Choicequestion in a module named choicequestions C This module defines a class that models exam questions. * A question with a text and an answer. class Question 1 def __init__(self, "", **: self._text-t sell. answer - def setText (self, questionText) 1 self._text = questiontext det setAnswer (self, correctResponse) : self. answer - correct Response def checkAnswer (sele. response) ceturn response -- self._answer def display (self): print (self._text) def _repr_(self) : return "Questions, ts}(self._text, self._answer) from questions import Question class ChoiceQuestion (Question) det Init (self, t"","") super().init(,a) selt._choices - de addChoice (self, choice, correct) : self._ehoices.append (choice) if correct Convert len choices to string. choiceString - at: (len (aelf._choices) self.setanswer (choiceString) der display (sell 1 super().display) + Display the answer choices. for i in range (len (self._choices)) : choiceNumber - 1+1 print(d: is (choiceNumber, self._choices (11) 1 Create a module named numericquestions. Inside the comdule create NumericQuestion class as a subclass of Question override the checkAnswer method such that if the response and the expected answer differ by no more than 0.01, then accept the response as correct 2. Create a module named fill questions. Inside the comdule create FillinQuestion class as a subclass of Question Such a question is constructed with a string that contains the answer, surrounded by for example. The inventor of Python was Guido van Rossum_^ The question should be displayed as The Inventor of Python was The 3. Create a module named multichoice question. Inside the mdule create a MultiChoice Question class as a subclass of Choice Question. MultiChoice Question allows multiple correct choices. The respondent (exam taker) should provide all correct choices, separated by spaces. Provide instructions in the question text. 4. Add a method named addText to the Question superclass that appends text to the question text and provide a different implementation of ChoiceQuestion that calls addText rather than storing a list of choices 5. Create a module named exammanegers. Inside the module, create a class named ExamManager An Exam Manager object stores Questions. It uses a list to store questions. o It has a method for adding a Question message. The newly added question to be appended to the end of the list o It has a method for returning the question found at a given index. Implement the necessary constructor. Each attribute must have a getter method 6. Add a module named main. Inside the module, create a main method that Creates an Exam Manager object Creates 10 different questions of different types, and adds them to the exam manager object use a proper loop to display questions stored in the Exammanager object