Python类方法间传递self.total值及空字符串报错解决
问题:如何正确返回self.total并在另一个方法中使用?
我想请教如何正确从一个方法返回self.total的值,以便在另一个方法中使用。当前代码如下:
class One: def __init__(self): self.total = '' def get_a(self): # self.total = '' for unpackList in range(0, Number): self.total = self.total + Number[unpackList] def get_b(self): # example code print(self.total)
self.total最终应为整数,但目前遇到报错:ValueError: invalid literal for int() with base 10: '',已知是因为传递了空字符串导致,但不知道如何修复。
问题分析
- 初始值类型错误:
self.total初始化为空字符串'',但你需要它是整数,未正确赋值时直接转int必然触发报错。 - 逻辑与变量缺陷:
get_a中Number未定义,且当前逻辑是拼接字符串而非累加整数,无法得到预期的整数值。 - 调用顺序问题:如果未先调用
get_a就执行get_b,self.total会保持初始空字符串状态。
修复方案
以下是修正后的代码,解决上述所有问题:
class One: def __init__(self): self.total = 0 # 初始化为整数0,符合最终类型预期 def get_a(self, number_list): # 传入要处理的数字集合(支持字符串或整数元素) for num in number_list: # 将元素转为整数后累加,直接得到整数结果 self.total += int(num) return self.total # 可选:返回total的值,实例变量已同步更新 def get_b(self): print(self.total) # 直接使用更新后的实例变量 # 使用示例 obj = One() # 先调用get_a完成赋值,传入字符串数字列表或整数列表都可以 obj.get_a(['10', '20', '30']) # 再调用get_b使用total的值 obj.get_b() # 输出60
关键修改点
- 初始化类型修正:把
self.total初始值设为0,彻底避免空字符串转int的错误。 - 明确参数传入:给
get_a添加number_list参数,解决原代码中Number未定义的问题,同时让逻辑更清晰。 - 整数累加逻辑:直接将元素转为整数后累加,一步得到预期的整数结果,无需后续额外转换。
- 确保调用顺序:使用时先调用
get_a完成赋值,再调用get_b使用self.total的值。
如果你的number_list本身就是整数列表,只需把循环里的int(num)改成num即可。
内容的提问来源于stack exchange,提问作者user20207408
相关产品推荐
相关产品推荐

