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

От лирики сразу к делу...

Есть вот такой код(палками не кидайтесь, вторую неделю начинаю изучать python):

from random import randint

class Balance(object):

    def __init__(self):
        self.money()
        self.input_bet()

    def run(self):
        self.input_bet = None

    def input_bet(self):

            input_bet = input('Ваша ставка: \n')

            try:
                input_bet = int(input_bet)
                self.input_bet = input_bet
            except Exception:
                print('Не число')


    def money(self) -> None:
        money = 10000
        print("Ваш баланс:" + str(money))

#----------------------------------------------------------------------------------------
class Roulette(object):

    def __init__(self):
        self.__choice_num = None
        self.__twist_num = None

    def run(self):
        while True:
            self.input_number()
            self.twist_roulette()
            self.check_choice_num()

    def input_number(self) -> None:

        is_num = False
        while not is_num:
            number = input('Введите целое число от 0 до 36 \n')

            try:
                number = int(number)
                is_num = True
                self.choice_num = number
            except Exception:
                print('Опаньки...Что-то ты сделал не так...\n')

    def twist_roulette(self) -> None:
        self.twist_num = randint(0,1)

    def check_choice_num(self) -> None:
        if self.choice_num == self.twist_num:
            print('Ты победил: выпало число ' + str(self.twist_num))
            return

        print('Ты проиграл: выпало число ' + str(self.twist_num))
#----------------------------------------------------------------------------------------
balance = Balance()
balance.run()
roulette = Roulette()
roulette.run()

Задумка следующая: Нужно создать класс самой игры, в котором мы обращаемся к классу Roulette и сравниваем 2 переменные с числами для дальнейшей работы с балансом (выпало наше число = профит / выпало что-то другое = мы в уходим в минус)....

И вот конкретно сама проблема заключается в обращении к классу и конкретным аргументам... Пытался разными способами но ничего не выходит :(


Ответы (1 шт):

Автор решения: RuslanZanevskiy

Решение конкретно для работы с объектом класса в другом классе:

class Game:
    def __init__(self, roulette, balance):
        self._roullette = roulette
        self._balance = balance
    
    def run(self):
        self._roullette.run()
        self._balance.run()
        # do something

balance = Balance()
roulette = Roulette()

game = Game(roulette, balance)
game.run()

Можно хранить в поле(переменной класса) обьект другого класса и работать с ним как обычно. Но думаю если цель сделать такую программу как вы описали, то этого будет не достаточно. Код в целом не плох для 2-ух недель обучения, но видно что сама логика работы программы не сильно продумана. Лучше реализовать классы так что бы можно было легко к ним обращатся из вне и потом все сгрупировать в класс Game.

→ Ссылка