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

如何初始化链式传入的多个类参数并计算它们的总和?

实现链式调用的求和类

要实现你需要的链式传参求和效果,核心是让类的实例支持可调用(即能像函数一样被调用),同时维护一个累加的总和。以下是具体实现:

class Chain:
    def __init__(self, initial):
        # 初始化总和为第一个传入的参数
        self.total = initial
    
    def __call__(self, value):
        # 每次调用时累加新参数,返回self以支持链式调用
        self.total += value
        return self
    
    def __repr__(self):
        # 控制交互式环境下的显示格式:整数显示为整数,否则显示浮点数
        if self.total.is_integer():
            return str(int(self.total))
        return str(self.total)
    
    def __float__(self):
        # 支持隐式转换为浮点数,方便参与数值运算
        return self.total
    
    def __int__(self):
        # 支持隐式转换为整数
        return int(self.total)

测试效果

>>> Chain(2.5)(2)(2)(2.5)
9
>>> Chain(3)(1.5)(2)(3)
9.5

关键原理说明

  • __init__:接收第一个参数,初始化累加总和。
  • __call__:Python中,只要类实现了这个方法,其实例就可以被当作函数调用。每次调用时把新参数加到总和,然后返回self,这样就能继续链式调用下一个参数。
  • __repr__:自定义实例在交互式命令行中的输出格式,让整数结果显示为整数,浮点数结果正常显示,完全匹配你要的效果。
  • __float__/__int__:让实例可以直接作为数值参与运算,比如Chain(2)(3) + 5会返回10。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:06:24