2017-09-06 2 views
0

Hinzufügen habe ich eine Klasse namens Frage nach untenPython eine Liste der Klasse in einer anderen Klasse

class Question: 
    q_count = 0 
    def __init__(self, s_id, q_id, question): 
     print("q count is ", Question.q_count)  
     self._s_id = s_id 
     self._question_text = question 
     self._answers = [] 
     self._q_id = Question.q_count 

    def get_answers(self): 
     return self._answers 

    def set_answers(self,answers): 
     self._answers = answers 

    def add_answer(self, Answer()): 
     self._answers.append(Answer()) 

und ich möchte es, eine Liste haben _answers genannt, die eine Liste der Antwort Objekte ist. wo Antwort ist eine andere Art von Klasse, die ich erstellt habe.

class Answer: 
    def __init__(self, q_id, a_id): 
     self._q_id = q_id 
     self._a_id = a_id 



# Subclass for multiple choice 
class MC_Answer(Answer): 
    def __init__(self, q_id, a_id, answer_text): 
     Answer.__init__(self, q_id, a_id) 
     self._answer_text = answer_text 

    def get_answer_text(self): 
     return self._answer_text 

    def set_answer_text(self, a_id): 
     self._a_id = a_id; 

In einem anderen Teil meines Codes erstelle ich eine Instanz eines MC_Answer-Objekts. Ich habe auch eine Instanz eines Frageobjekts. Wie füge ich das an seine Antwortenliste an?

 answer1 = MC_Answer(idQ, 1, answer_text) 
     new_q.add_answer(answer1) 
     write_to_file(alist1, "answers.csv") 

dies falsch ist, aber wenn ich als Parameter haben nicht answer1, wie weiß Python, dass bestimmte Instanz einer Antwort hinzufügen?

Antwort

0

Ihre Add Antwort-Klasse verwendet nie den Parameter, Sie stattdessen eine neue Instanz der Antwort Klasse machen und dass in die Liste anhängen, anstatt Sie es ändern müssen, um es einen Parameter geben und es dann richtig

def add_answer(self, Answer()): 
    self._answers.append(Answer()) 
verwenden

sollte

def add_answer(self, answer): 
    self._answers.append(answer) 
sein
Verwandte Themen