【发布时间】:2017-06-29 22:31:45
【问题描述】:
考虑以下示例代码:
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 添加到列表中吗?!)?
【问题讨论】:
-
能贴出完整的代码吗?
-
您的
scores列表可能是列表列表吗? -
self.scores和scores是两个完全不同的引用,它们实现了不同的目标。尝试删除sum()调用并查看输出。你应该会看到两种不同的东西出现 -
@VictorC.: 不,请注意 sum 首先以 隐式 0 开头。所以
sum([[1,4]])会报错。 -
@KanishkDugar 你在做
self.scores = args,但是 args 是一个参数列表,所以你要么需要把它改成def __init__(self, scores): self.scores = scores要么def __init__(self, *args): self.scores = args[0]
标签: python python-3.x