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

如何实现接收对象变量名并返回对应属性值之和的函数?

解决动态获取对象属性求和的问题

嘿,我来帮你搞定这个需求!首先咱们先梳理下你原代码里的问题,然后给出正确的实现方式。

原代码的核心问题

你想通过传入字符串形式的属性名来求和,但直接用obj.x是行不通的——这里的x是字符串,不是对象的直接属性,得用Python的getattr()函数来动态获取属性值才行。另外你也注意到了最后一行的笔误,得用实例f而非类foo,参数也得对应成'w'和'z'。

正确实现方式

下面两种写法都能满足你的需求:

方式一:普通函数

这种写法比较灵活,能给任意对象计算指定属性的和:

class foo:
    def __init__(self):
        self.w = 5
        self.z = 10

def sum_attributes(obj, attr_name1, attr_name2):
    # 用getattr根据字符串属性名获取对应值
    val1 = getattr(obj, attr_name1)
    val2 = getattr(obj, attr_name2)
    return val1 + val2

f = foo()
print(sum_attributes(f, 'w', 'z'))  # 输出:15

方式二:类的实例方法

如果这个求和逻辑只属于foo类的实例,也可以把它写成类的方法:

class foo:
    def __init__(self):
        self.w = 5
        self.z = 10

    def sum_attributes(self, attr_name1, attr_name2):
        return getattr(self, attr_name1) + getattr(self, attr_name2)

f = foo()
print(f.sum_attributes('w', 'z'))  # 输出:15

额外小提示

如果担心传入的属性名不存在会报错,可以给getattr加个默认值参数,比如:

getattr(obj, attr_name1, 0)  # 属性不存在时返回0,避免AttributeError

内容的提问来源于stack exchange,提问作者user8215383

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:30:13