You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:42:02