Как сделать, чтобы при использовании 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
Я бы хотел, чтобы для второй операции(когда покупаю доллар) он брал баланс исходя из предыдущей.