Как использовать переменные из одной класса в другом?

Рейтинг: 0Ответов: 2Опубликовано: 17.06.2023

Хочу использовать переменные другой функции внутри класса, но их почему-то не видит функция.
Как можно это сделать?

Не видит во второй функции параметры question_1 и dificulti.

class AskQuestion(Question):

    def ask(self, question_1):
        question_1 = random.choice(list(question_1))
        question_q = question_1["q"]
        dificulti = question_1["d"]
        return self.build_question(question_q, dificulti)


class AnswerQuestion(AskQuestion):

    def answer(self, question_2):
        ans = AskQuestion()
        ans.ask(question_2)
        answer_player = input()
        question_r = question_1["a"]
        self.is_correct(answer_player, question_r )
        self.get_point(dificulti)
        print(dificulti)

Ответы

▲ 2

Яна, хотя вы не ответили ни на один мой комментарий и я совсем не понимаю что вы хотите сделать.

Но учитывая что это ваш первый вопрос, попробуйте так:

import random


class AskQuestion(Question):
    dificulti = None                                           # +++
    question_1 = None                                          # +++

    def ask(self, question_1):
# ----> vvvv <------------------------------------------------------    
        self.question_1 = random.choice(list(question_1))
# ???                # ??? или что
        question_q = question_1["q"]
# ----> vvvv <------------------------------------------------------
        self.dificulti = self.question_1["d"]
# -------------------------------------------> vvvv <---------------
        return self.build_question(question_q, self.dificulti)


class AnswerQuestion():                                     # ? AskQuestion
    def answer(self, question_2):
# ----> vvvv <------------------------------------------------------
        self.ans = AskQuestion()
# ----> vvvv <------------------------------------------------------
        self.ans.ask(question_2)
        answer_player = input()
# -----------------> vvvvvvvvv <-------------
        question_r = self.ans.question_1["a"]
        self.is_correct(answer_player, question_r )
# -------------------> vvvvvvvv <-----------------------------------
        self.get_point(self.ans.dificulti)
# ----------> vvvvvvvvv <-------------------------------------------
        print(self.ans.dificulti)
▲ 0

Почему бы не сделать один класс вместо двоих?

class AskQuestion():
    def ask(self, question_1):
        question_1 = random.choice(list(question_1))
        question_q = question_1["q"]
        dificulti = question_1["d"]
        return self.build_question(question_q, dificulti)


    def answer(self, question_2):
        ans = AskQuestion()
        ans.ask(question_2)
        answer_player = input()
        question_r = question_1["a"]
        self.is_correct(answer_player, question_r )
        self.get_point(dificulti)
        print(dificulti)

Вопрос не совсем понятен.