Python. Связывание двух переменных в одну, возможно ли?

У меня есть задача написать калькулятор. Я начал разрабатывать приоритеты и в итоге появилась потребность вычислять значения где-то в середине примера. Всё должно работать так - я вычисляю результат и вместо обоих чисел ставлю ссылку на уже вычисленное число. В этом и состоит проблема. Всё идёт не так как планируется на таком примере:

20 + 2 * 4 + 2 - 9 * 2

Я вывожу порядок действий в консоль и вот, что получаю:

9.0 * 2.0      #ок

2.0 * 4.0      #ок

20.0 + 8.0     #ок

2.0 - 18.0     #ок

8.0 + -16.0    #а вот тут был взят результат 2 * 4 вместо 20 + 8

-16.0

Для наглядности закину часть кода, которую я использую. Я новичёк в Python и мне трудно понять как обойти эту ситауцию привильно.

class Primitive:
    def __init__(self, number):
        self.number = number

    def get(self):
        return self.number

    def set(self, number):
        self.number = number

    def link(self, prim):
        self.get = prim.get


class Operator:
    def __init__(self, operator, priority, first, second=None):
        self.operator = operator
        self.first = first
        self.second = second
        self.priority = priority

    def getpriority(self):
        return self.priority

# операции происходят по принципу вычисления "на месте" выполняясь в зависимости от приоритета
# то есть, вместо двух чисел остаётся одно и так до конца пока не останется единственное - результат
    def setresult(self):
        if self.operator == "+":
            self.second.set(self.first.get() + self.second.get())
            self.first.link(self.second)

дальше после оператора "+" одни и те же действия только с другими операторами, поэтому не вижу смысла усложнять восприятие. Этого кода, думаю, достаточно, чтобы понять где недочёт.

Прошу дать совет как связать 2 вычисленные ссылки в 1 чтобы, при изменении любой из двух, изменялись обе.


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