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

如何通过__add__方法实现Python自定义类多个对象的相加?

解决多实例连续相加的问题

问题出在你的__add__方法直接返回了整数,导致aa + bb得到int类型,后续无法和a类实例继续执行+操作。要支持任意数量的实例连续相加,需要让__add__返回**a类的实例**,而不是直接返回整数,这样每次相加都是实例间的操作,最后再转换为整数即可。

修改后的代码:

class a():
    def __init__(self, val):
        self.val = val
    
    def __add__(self, other):
        # 返回新的a实例,而非直接返回数值
        return a(self.val + other.val)
    
    # 实现__int__方法,方便将实例转为整数
    def __int__(self):
        return self.val
    
    # 可选:添加__repr__方便调试查看实例
    def __repr__(self):
        return f"a({self.val})"

# 测试
aa = a(22)
bb = a(11)
cc = a(11)

# 连续相加后转成整数
total = int(aa + bb + cc)
print(total)  # 输出44

如果需要支持实例和普通整数的混合相加(比如aa + 5或者5 + aa),可以补充__radd__方法:

def __radd__(self, other):
    # 处理左操作数是整数的情况
    return a(other + self.val)

这样不管是多个实例连续相加,还是实例和整数混合相加,都能正常工作,最后通过int()转换就能得到你需要的整数结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:39:35