БЮДЖЕТНОЕ ПРИЛОЖЕНИЕ: Как реализовать метод переноса
Добрый день, пожалуйста, я пытаюсь создать бюджетное приложение, использующее Python. Я использую класс Category, который может создавать экземпляры различных категорий бюджета.
У меня есть метод экземпляра передачи и вывода средств и метод передачи. Проблема в том, что когда я использую метод передачи, он не отражается в передаваемой категории. Пожалуйста, как мне это сделать?
class Category:
def __init__(self, category):
self.category = category
self.ledger = []
def deposit(self, amount, description=""):
#self.amount = amount
#self.description = description
b = {"amount": amount, "description": description}
self.ledger.append(b)
def withdraw(self, amount, description=""):
amount = amount * -1
#self.description = description
self.ledger.append({"amount": amount, "description": description})
def get_balance(self):
balance = 0
for i in self.ledger:
balance = balance + i["amount"]
return(balance)
def transfer(self, amount, new_category):
self.withdraw(amount, f"Transfer to {new_category}")
Category(new_category).deposit(amount, f"Transfer from {self.category}")
def __str__(self):
return(f"This is the budget for {self.category}")
food = Category("food")
housing = Category("housing")
food.deposit(200, "lunch")
food.withdraw(400, "Indomie")
food.transfer(480, "housing")
print(food)
print(food.ledger)
print(food.get_balance())
print(housing.ledger)
print(housing.get_balance())
У меня есть метод экземпляра передачи и вывода средств и метод передачи. Проблема в том, что когда я использую метод передачи, он не отражается в передаваемой категории. Пожалуйста, как мне это сделать?
1 ответ
Потому что в твоемtransfer()
функция, вы каждый раз создаете новую категорию. Даже если новая категория имеет то же имя, что и существующая категория, они по-прежнему остаются в памяти двумя отдельными объектами. И вы никогда и нигде не используете вновь созданную категорию.
Вместо передачи строки и создания новой категории с этим именем вы можете передать существующую категорию.
def transfer(self, amount, target):
self.withdraw(amount, f"Transfer to {target.category}")
target.deposit(amount, f"Transfer from {self.category}")
food.transfer(480, housing)