如何对属于同一类的所有对象的一个参数求和


class Bill:
def __init__(self,type,amount):
self.amount = amount
self.type = type
def total(*args):
total_bill = []
for arg in args:
total_bill.append(arg.amount)
return sum(total_bill)
b1 = Bill('Elect',500)
b2 = Bill('Gas',300)
b3 = Bill('Other',100)
print(Bill.total(b1,b2,b3))
print(b1.total(b2))

我试图理解Python的OOP逻辑。在这里,我创建了一个方法(total)来计算账单对象的总数。代码可以工作,但看起来非常不寻常,因为第二部分(b1.total(b2))是无意义的(当我将其作为实例的方法调用时)。因此,我想知道这是否是一种体面的方式?我的意思是创建一个方法之间的计算实例内的类?什么是获得账单总额的最好方法?(账单的数量可能会更高。)

您可以使用一个类变量来保存所有的账单项目,然后在计算总数时使用它,而不是将项目作为参数传递。

class Bill:
all_bills = []
def __init__(self,type,amount):
self.amount = amount
self.type = type
self.all_bills.append(self)
@classmethod
def total(cls):
return sum(arg.amount for arg in cls.all_bills)
b1 = Bill('Elect',500)
b2 = Bill('Gas',300)
b3 = Bill('Other',100)
print(Bill.total())        

最新更新