考虑以下示例代码:
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添加到列表中?!)
发布于 2017-06-29 23:59:54
首先,“分数”是作为一个列表发送的,而不是作为*args发送的。因此,这是不正确的,这使self.scores成为一个带有列表的元组。
其次,它只适用于‘分数’而不是'self.scores‘,因为’分数‘也是一个全局变量,这是一个列表。
谢谢NieDzejkob和WillemVanOnsem帮我找出这个蠢货。
https://stackoverflow.com/questions/44835945
复制相似问题