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

2024-04-20 11:54:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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),用于计算bill对象的总金额。代码可以工作,但似乎非常不寻常,因为第二个打印(b1.total(b2))是无意义的(当我将其作为实例的方法调用时)。因此,我想知道这是否一种体面的方式?我的意思是为类内实例之间的计算创建一个方法?获得账单总额的最佳方式是什么。(账单的数量可能会高得多。)


1条回答
网友
1楼 · 发布于 2024-04-20 11:54:27

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

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())        

相关问题 更多 >