刚开始在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 后我的大脑一片混乱......
答案 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)