我想对一个对象的所有实例的costsum属性求和。
class ActivityCenter:
def __init__(self, costpool, costsum, costdriver, cdunits):
self.costpool = costpool
self.costsum = costsum
self.costdriver = costdriver
self.cdunits = cdunits
cp1 = ActivityCenter("Material Handling", 480000, "Pounds", 160000)
cp2 = ActivityCenter("Production orders", 90000, "Num of POs", 200)
# I am looking to add up the costsum values for all instances, similar to:
costsumtotal = (cp1.__dict__.get("costsum")) + (cp2.__dict__.get("costsum"))
到目前为止,我已经尝试将sum()与以下理解配合使用,指的是this solution:
B = []
for i in range(10):
B.append(ActivityCenter())
s = sum(i.costsum for i in B)
但是我在克服TypeError时遇到了麻烦,因为我缺少4个必需的位置参数。
最佳答案
要在Python中将sum
内置函数用于对象的成员变量,您需要对对象的成员变量进行排序(例如,元组或列表)。以下代码段显示了如何列出对象的成员变量。您发布的代码省略了comprehension expression。希望对您有所帮助:)
class ActivityCenter:
def __init__(self, costpool, costsum, costdriver, cdunits):
self.costpool = costpool
self.costsum = costsum
self.costdriver = costdriver
self.cdunits = cdunits
"""
Create some objects
objs = []
for i in range(num_obj):
objs.append(ActivityCenter(<some value>,<...>,<...>,<...>))
Or use objects to make a list
"""
cp1 = ActivityCenter("Material Handling", 480000, 160000, "Pounds")
cp2 = ActivityCenter("Production orders", 90000, 200, "Num of POs")
cp3 = ActivityCenter("Marketing", 120000, 1000, "Num of events")
objs = [cp1, cp2, cp3]
total_cost = sum([obj.costsum for obj in objs]) # List comprehension
print("Total cost: ", total_cost)
关于python - 如何对一个对象的所有实例的属性求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42777251/