将属性从一个类传递到另一个类

时间:2021-07-01 19:31:10

标签: python class oop

刚开始在python中使用OOP。实在想不通。

所以我的问题是如何在另一个类中使用方法。我知道它有效,只是似乎无法理解逻辑。

问题文件:

class Question():    # ** !!! Why do I need this line? !!!**
    def __init__(self,text,answer):
        self.text=text
        self.answer=answer

测验文件:

class QuizBrain:
    def __init__(self,q_list): #putting on zero question number and importing list etc
        self.question_number=0
        self.question_list=q_list

    def next_question(self):
        current_question=self.question_list[self.question_number]
        self.question_number+=1
        # ** How do I use .text attribute in different file without calling the class? **
        self.user_input=input(f'Q{self.question_number}: {current_question.text} True/False')

    def still_has_question(self):
        return self.question_number<len(self.question_list)

我从中获取数据的文件:

question_data = ['random data','random data']

主文件:

from question_model import Question
from data import question_data
from quiz_brain import QuizBrain

question_bank=[]
for question in question_data:
    new_question=Question(question['text'],question['answer'])
    question_bank.append(new_question)

quiz=QuizBrain(question_bank)
quiz.next_question()
while quiz.still_has_question():
    quiz.next_question()

所以基本上我的问题可能看起来有点傻,但是我如何将 .text 属性从一个类传递到另一个类?为什么在没有 current_question 属性的情况下打印出 .text 的内存位置?目前在开始 OOP 后我的大脑一片混乱......

1 个答案:

答案 0 :(得分:0)

你只需要从 QuizBrain 类继承 Question 类。

class Question:   
    def __init__(self, text, answer):
        self.text=text
        self.answer=answer

class QuizBrain(Question): # You need to pass Question class as an arguement
    def __init__(self,q_list):
        Question.__init__(self, text, answer) # This is the same __init__ functin from the Question class

现在你可以像这样使用另一个类的 .text 属性:

var = QuizBrain("your arguements")
print(var.text)