我的方法不记得其他方法的东西

时间:2015-07-04 16:18:41

标签: python class oop

我的question.info()方法不会记住问question.ask()方法中的任何内容。

我认为这是因为它从初始函数刷新,但是当我删除初始函数中首次定义变量的位置时,它会返回一个很大的错误。

这是我的代码:

import time
class question:

    def __init__(self, question, answer):
        self.question = question
        self.answer = answer
        self.time = 0
        self.attempt = 0
        self.correct = False

    def ask(self):
        start = time.clock()
        self.attempt = input(self.question)

        self.time = time.clock() - start
        if self.attempt == str(self.answer):
            self.correct = True 

    def info(self):
        print("Question:", self.question)
        print("Answer:", self.answer)
        print("Attempt:", self.attempt)
        print("Correct:", self.correct)
        print("time taken:", self.time)


class test:

    def __init__(self, qList):
        self.qList = qList
    def doTest(self):
        for i in range(0, len(self.qList)):
            question(self.qList[i][0],self.qList[i][1]).ask()
            question(self.qList[i][0],self.qList[i][1]).info()

basicMath = [
    ["what is 1",1],
    ["what is 2",2],
    ["what is 3",3],
    ["what is 4",4],
    ["what is 5",5],
    ]

task = test(basicMath)
task.doTest()

1 个答案:

答案 0 :(得分:4)

您创建单独的question实例

for i in range(0, len(self.qList)):
    question(self.qList[i][0],self.qList[i][1]).ask()
    question(self.qList[i][0],self.qList[i][1]).info()

你在那里打电话question()两次。改为创建一个:

for i in range(0, len(self.qList)):
    q = question(self.qList[i][0],self.qList[i][1])
    q.ask()
    q.info()

因为单独的实例保持其状态分开。

您应该直接在self.qList上直接循环,而不是在此处使用range()

for question_text, answer in self.qList:
    q = question(question_text, answer)
    q.ask()
    q.info()