在方法中使用'self'关键字

时间:2017-06-29 22:31:46

标签: python python-3.x

请考虑以下示例代码:

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添加到列表中吗?!)?

1 个答案:

答案 0 :(得分:0)

首先,'得分'作为列表发送,而不是作为* args发送。所以这是不正确的,这使得self.scores成为一个带有列表的元组。

其次,它只使用'得分'而不是'self.scores',因为'得分'也是一个全局变量,这是一个列表。

感谢@NieDzejkob和@WillemVanOnsem帮我解决这个问题。