Return 字符串而不是 Python 中的 class

Return string instead of class in Python

您好,在最近的本地编程竞赛中,您必须定义一个 class,它采用类似链的参数和 return 它们的总和,例如:

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

我能写的最好的东西是这段代码:

class Chain():

    value = 0

    def __new__(self, num):
        self.value += num
        return self

obj = Chain(2)(3)
print(obj.value)

但是 return 类型是 class 而不是 int,而且我使用的是静态 属性 这显然是错误的。非常感谢任何帮助。

P.S。 : 请注意,该比赛于 2022 年 1 月 7 日结束,因此我认为发布此问题没有任何问题。

您可以从 float 继承(因为您需要支持十进制数)并像这样实现 __call__

class Chain(float):
    def __call__(self, value):
        return self.__class__(self+value)

>>> Chain(3)(1.5)(2)(3) # sum
9.5
>>> Chain(2.5)(2)(2)(2.5) # sum
9.0