【发布时间】:2022-01-27 14:07:15
【问题描述】:
您好,在最近的一次本地编程竞赛中,您必须定义一个类,该类接受链式参数并返回它们的总和,例如:
>>> 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)
但返回类型是类而不是 int,而且我使用的静态属性显然是错误的。希望有任何帮助。
附: :请注意,比赛于 2022 年 1 月 7 日结束,所以我认为发布这个问题没有任何问题。
【问题讨论】:
-
您需要查看
__call__和__str__方法,而不是__new__... -
@deceze 谢谢我可以用你的建议写答案。我还更改了标题以更好地代表问题和答案。但是我不确定是否应该删除该问题(因为它没有答案并且您的评论是正确答案)还是保留它。也许一个更好的问题标题可以使它对可能面临同样问题的其他人有用
-
@AvSaba 请提供工作代码
-
@sahasrara62 是的,您的链接回答了这个问题。有趣的是,这个问题是在比赛发生的同一天提出的。
-
@AvSaba 不知道你在说什么上下文,但我看到这个问题所以将其标记为重复
标签: python class return instance