2016-11-23 408 views
0

我不確定我是否完全理解類/實例變量。我有這樣的代碼:對象沒有屬性questionNum

class Question(object): 

    """ 

    Exercise parameters 

    """ 
    input_method = "MathKeyboard" 
    difficulty = 4 
    dirname = "../../../main/question_factory/int/generated_questions" 


    """ 

    Initialize the exercise 

    """ 

    def __init__(self, cur, new): 
     questionFileName = self.dirname + "/" + self.question_file() 
     self.questionNum = cur 
     with open(os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), questionFileName)), 'rb') as questionFile: 
      self.question = pickle.load(questionFile) 

    def question_file(self): 
     print self.questionNum <- 
     return "difficulty" + str(self.difficulty) + "_" + str(self.questionNum) + ".question" 

,它是給了一個錯誤'Question' object has no attribute 'questionNum' 上標線。你能幫我解決這個問題嗎?先謝謝你。

+0

你可以把它變成一個可運行的例子嗎?你不需要我們的電腦上沒有任何東西的鹹菜或路徑。只是運行和演示問題的東西。 – tdelaney

+0

我沒有看到任何「標記線」。此外,代碼不完整,因爲您不包括顯示* *使用問題的代碼。 –

+0

標記的行是'print self.questionNum',但@tdelaney發現它,我在分配變量之前調用函數 –

回答

0

問題是,在初始化其變量之前,您需要撥打question_file__init__。首先設置變量。

class Question(object): 

    """ 

    Exercise parameters 

    """ 
    input_method = "MathKeyboard" 
    difficulty = 4 
    dirname = "../../../main/question_factory/int/generated_questions" 


    """ 

    Initialize the exercise 

    """ 

    def __init__(self, cur, new): 
     self.questionNum = cur 
     questionFileName = self.dirname + "/" + self.question_file() 
     with open(os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), questionFileName)), 'rb') as questionFile: 
      self.question = pickle.load(questionFile) 

    def question_file(self): 
     print self.questionNum 
     return "difficulty" + str(self.difficulty) + "_" + str(self.questionNum) + ".question" 
+0

Good catch!非常感謝。我沒有注意到這一點。 –