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 чтобы, при изменении любой из двух, изменялись обе.