class Exam:
    def __init__(self, name ):
        self.name = name
        self.questions = []

    def AddQuestion(self, q):
        self.questions.append(q)

    def Print(self):
        count = 1
        for q in self.questions:
            print("%d. %s"%(count, q) )
            print()
            count = count + 1

    def PrintAnswerKey(self):
        count = 1
        for q in self.questions:
            print("%d. %s"%(count, q) )
            print( "Answer: %s"%q.getAnswer() )
            print()
            count = count + 1

class Question:
    def __init__(self, question ):
        self.question = question
        self.answer = ""

    def setAnswer(self, answer ):
        self.answer = answer

    def getAnswer(self):
        return self.answer

    def __str__(self):
        return self.question
        
def main():
    e = Exam( "Exam 2" )
    q = Question( "What is an instance variable? " )
    q.setAnswer( "A 'self.' variable. \n       There is a copy for each object of the class." )
    e.AddQuestion(q)
    q = Question( "What is self? " )
    q.setAnswer( "Whatever object is being referred to." )
    e.AddQuestion(q)
    q = Question( "What is an object? " )
    q.setAnswer( "One instance of a class." )
    e.AddQuestion(q)

    e1 = Exam( "Alternative exam 2" )
    q = Question( "I'm tired can we go home" )
    q.setAnswer( "no" )
    e1.AddQuestion(q)
    


    e.Print()
    print( "#########################" )
    e.PrintAnswerKey()

main()

    
