如何实现class C实例化时返回数组求和表达式?__init__无法返回值求解
解决方法
你需要重写类的__str__方法来定义对象的文本表示,而不是在__init__里返回值——__init__是构造函数,只能返回None,不能返回其他值。另外你的原代码里循环拼接字符串时会多一个多余的+,也可以用更简洁的方式实现。
修正后的代码
class C(): def __init__(self, array): self.array = array def __str__(self): # 把数组元素转成字符串并用+连接 parts = '+'.join(map(str, self.array)) # 计算总和 total = sum(self.array) # 返回拼接好的表达式 return f"{parts}={total}"
说明
__str__方法:当你打印对象(print(C([5,12])))或者把对象转为字符串(str(C([5,12])))时,Python会自动调用这个方法,返回的字符串就是对象的文本表示。- 简化拼接与求和:
'+'.join(map(str, self.array)):把数组里的每个整数转成字符串,再用+连接成类似"5+12"的格式,避免手动循环的错误。sum(self.array):直接用内置函数计算数组总和,比手动累加更高效简洁。
测试结果
print(C([5, 12])) # 输出: 5+12=17 print(C([6,0,15])) # 输出: 6+0+15=21 str(C([3,4,5])) # 返回: "3+4+5=12"
内容的提问来源于stack exchange,提问作者ThemeSong3
相关产品推荐
相关产品推荐

