Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将所有实例的属性添加到一起_Python_Python 3.x - Fatal编程技术网

Python 如何将所有实例的属性添加到一起

Python 如何将所有实例的属性添加到一起,python,python-3.x,Python,Python 3.x,我在学习OOP,我想做一个程序来记录我的储蓄,我想把我每个月的储蓄加起来 每个月都是一个对象,我要将每个月的(month.budget+month.to_save_every_month)相加 class Saving(): 每个月保存一次=961.71 花费=[] #saved=这是我想要添加它们的地方 定义初始(自我、工资、租金): 工资 self.rent=租金 self.budget=round(self.wage-(self.to\u save\u每月+self.rent),2) de

我在学习OOP,我想做一个程序来记录我的储蓄,我想把我每个月的储蓄加起来

每个月都是一个对象,我要将每个月的(month.budget+month.to_save_every_month)相加

class Saving():
每个月保存一次=961.71
花费=[]
#saved=这是我想要添加它们的地方
定义初始(自我、工资、租金):
工资
self.rent=租金
self.budget=round(self.wage-(self.to\u save\u每月+self.rent),2)
def支出(自我、支出):
self.budget=round(self.budget-spend,2)
self.spend.append(spend)

如果您将
对象保存在名为例如
savings\u list
的列表中,您只需执行以下操作:

total_savings = sum(x.budget + x.to_save_each_month for x in savings_list)

首先,您必须跟踪所有创建的类实例,因为没有内置的方法来实现这一点。最简单的方法是添加一个空列表作为类变量,并在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)

在内部,将此方法作为类方法可能更有意义,因为它只需要访问class属性
实例
,但这并不是重点-它应该以任何方式工作。

但我似乎无法让它工作-请更具体一些。您是否得到错误或不正确的输出?向我们展示所有相关信息。很抱歉,我的意思是我不知道如何让它工作,我已经研究了一个小时,但似乎找不到任何方法来添加所有对象的属性。