我正在学习OOP,我想创建一个程序来跟踪我的积蓄,我试图将每个月的积蓄相加。
每个月都是一个对象,我想将每个月的总和(month.budget + month.to_save_each_month)相加
class Saving():
to_save_each_month = 961.71
spent = []
# saved = this is where i would like to add them up
def __init__(self,wage,rent):
self.wage = wage
self.rent = rent
self.budget = round(self.wage - (self.to_save_each_month + self.rent),2)
def spending(self, spend):
self.budget = round(self.budget - spend, 2)
self.spent.append(spend)
答案 0 :(得分:1)
如果您的Saving
对象在一个名为savings_list
的列表中,则只需执行以下操作:
total_savings = sum(x.budget + x.to_save_each_month for x in savings_list)
答案 1 :(得分:0)
首先,您将必须跟踪类的所有已创建实例,因为没有内置方法可以执行此操作。最简单的方法是添加一个空列表作为类变量,并在init方法中将每个实例附加到该变量:
class Saving:
# your other class variables here
instances = []
def __init__(self,wage,rent):
# your init logic here
self.__class__.instances.append(self)
现在,您只需要创建一个方法即可返回所需的总和:
def savings_sum(self):
return sum(month.budget + month.to_save_each_month for month in self.instances)
将此方法作为类方法在内部可能更有意义,因为它实际上仅需要访问类属性instances
,但这不重要–它应该以任何一种方式起作用。