日安,请我试图创建一个预算应用程序,使用Python。我使用了一个Category类,它可以示例化不同的预算类别。
我有一个转移和撤回示例方法和一个转移方法。问题是,当我使用transfer方法时,它并没有反映在被转移到的catory中。拜托,我该怎么做?
code
code output
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())
我有一个转移和撤回示例方法和一个转移方法。问题是,当我使用transfer方法时,它并没有反映在被转移到的catory中。拜托,我该怎么做?
1条答案
按热度按时间tcomlyy61#
因为在
transfer()
函数中,每次都要创建一个新的Category。即使新类别与现有类别具有相同的名称,它们在内存中仍然是两个独立的对象。而且你永远不会在任何地方使用新创建的类别。您可以传入一个现有的类别,而不是传入一个字符串并创建一个具有该名称的新类别。