Python中如何高效计算同一个类所有实例对象的指定属性总和
优化方案
以下是两种适合大量员工场景的高效实现方案:
方案1:类属性自动累计
直接在Person类中定义共享的类属性统计总薪资,每次创建员工实例时自动完成薪资累加,不需要后续手动遍历计算,无论多少员工都可以O(1)复杂度拿到结果。
class Person(): # 类属性,所有实例共享,存储总薪资 total_salary = 0 def __init__(self,name,age,salary): self.age = age self.name = name self.salary = salary # 实例化时自动累加当前员工薪资到总统计 Person.total_salary += salary mike = Person('mike',20,2000) john = Person('john',25,2500) # 直接读取类属性即可得到总薪资 print(Person.total_salary)
该方案优势:
- 不需要额外维护员工容器,创建员工的同时就完成了统计,性能最高
- 可以配套扩展员工离职的薪资扣除逻辑,后续维护成本低
方案2:容器存储实例批量计算
如果不想修改原有Person类的定义,可以把所有员工实例统一存入列表类容器,用sum函数批量求和,不需要逐个写变量累加。
class Person(): def __init__(self,name,age,salary): self.age =age self.name=name self.salary=salary # 所有员工实例统一存入列表,新增员工仅需要在列表中加一行即可 employees = [ Person('mike',20,2000), Person('john',25,2500), ] # 批量计算总薪资 total_salary = sum(emp.salary for emp in employees) print(total_salary)
该方案优势:
- 无需改动原有类代码,对已有项目的兼容性更强
- 灵活度更高,可以按需求筛选统计,比如统计30岁以下员工总薪资仅需要加判断条件:
sum(emp.salary for emp in employees if emp.age < 30)
内容的提问来源于stack exchange,提问作者Taylan GÜNAY
相关产品推荐
相关产品推荐

