如何将所有实例的属性加在一起

时间:2019-05-19 13:59:15

标签: python python-3.x

我正在学习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)

2 个答案:

答案 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,但这不重要–它应该以任何一种方式起作用。