Как сделать, чтобы при использовании setattr, атрибут запоминался для следующих операций

Вот код, с которым что-то не так

class Currency:
    available_usd = 13500.98
    available_uah = 39345.50
    rate_usd = 27.5
    rate_uah = 27.3
    __max_dollars_from_uah = available_uah / rate_usd  # 1430.7454545454545
    __max_uah_from_dollars = available_usd * rate_uah  # 368576.754

    def __init__(self, available_usd=available_usd, available_uah=available_uah, rate_usd=rate_usd, rate_uah=rate_uah):
        self.available_usd = available_usd
        self.available_uah = available_uah
        self.rate_usd = rate_usd
        self.rate_uah = rate_uah

    @property
    def course_usd(self):
        return f"RATE USD {self.rate_usd}, AVAILABLE {self.available_usd}"

    @property
    def course_uah(self):
        return f"RATE USD {self.rate_uah}, AVAILABLE {self.available_uah}"

    def exchange_uah(self, total=__max_dollars_from_uah, r=rate_usd, ad=available_usd, au=available_uah):
        uah_for_trade = int(input("Enter amount of money(you buy USD): "))
        result_exchange = uah_for_trade / r
        rate = result_exchange / uah_for_trade
        if result_exchange < total:
            setattr(self, "available_usd", ad + result_exchange)
            setattr(self, "available_uah", au - uah_for_trade)
        return f"USD {result_exchange.__round__(4)},RATE {rate.__round__(4)}"

    def exchange_usd(self, total_1=__max_uah_from_dollars, r1=rate_uah, ad=available_usd, au=available_uah):
        usd_for_trade = int(input("Enter amount of money(you buy UAH): "))
        result_exchange = usd_for_trade * r1
        rate = result_exchange / usd_for_trade
        if result_exchange < total_1:
            setattr(self, "available_usd", ad - usd_for_trade)
            setattr(self, "available_uah", au + result_exchange)
        return f"UAH {result_exchange.__round__(4)},RATE {rate.__round__(4)}"

при создании экземпляра класса, я хочу чтобы он запоминал запоминал операции которые уже сделал, и обновлял баланс в соответствии с этим. Но почему при проделывании новой операции обмена валют, берется баланс, который указан в атрибутах класса

from currency import Currency


class CurrencyChange(Currency):
    pass


my_trader = CurrencyChange()
print(my_trader.available_uah)
print(my_trader.available_usd)
print(my_trader.exchange_uah())
print(my_trader.available_uah)
print(my_trader.available_usd)
print(my_trader.exchange_usd())
print(my_trader.available_uah)
print(my_trader.available_usd)

вывод в консоль:

print(my_trader.available_uah)

39345.5

print(my_trader.available_usd)

13500.98

print(my_trader.exchange_uah())

Enter amount of money(you buy USD): 1000

USD 36.3636,RATE 0.0364

print(my_trader.available_uah)

38345.5

print(my_trader.available_usd)

13537.343636363636

print(my_trader.exchange_usd())

Enter amount of money(you buy UAH): 537

UAH 14660.1,RATE 27.3

print(my_trader.available_uah)

54005.6

print(my_trader.available_usd)

12963.98

Я бы хотел, чтобы для второй операции(когда покупаю доллар) он брал баланс исходя из предыдущей.


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