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
您好,在最近的本地编程竞赛中,您必须定义一个 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