请考虑以下示例代码:
class Student:
def __init__(self, *args):
self.scores = args
def calculate_sum(self):
return sum(self.scores)
scores = list(map(int, input().split()))
s = Student(scores)
print("sum:", s.calculate_sum())
当我调用此方法时,我收到以下错误:
TypeError:+:'int'和'list'
的不支持的操作数类型
但是,如果我从属性分数中删除“self”关键字,它可以正常工作:
def calculate_sum(self):
print(sum(scores))
注意:输入是一行中以空格分隔的整数。例如。 100 67 78
有人会非常友好地解释为什么会发生这种情况以及TypeError消息的含义(我将int添加到列表中吗?!)?
答案 0 :(得分:0)
首先,'得分'作为列表发送,而不是作为* args发送。所以这是不正确的,这使得self.scores成为一个带有列表的元组。
其次,它只使用'得分'而不是'self.scores',因为'得分'也是一个全局变量,这是一个列表。
感谢@NieDzejkob和@WillemVanOnsem帮我解决这个问题。