AttributeError:' list'对象没有属性" assignmentScores'

时间:2015-01-03 17:53:42

标签: python

我不明白这个问题的含义或如何解决它! 我一直遇到问题AttributeError:' list'对象没有属性" assignmentScores' 这是什么意思?以及如何解决此问题?

我的代码是:

class Student:
    studentName = ""
    studentCourse = ""
    averageMark = 0
    grade = "none"
    assignmentScores = [1, 2, 3, 4]


    def __init__(self, n, c, a, g,m):
      self.studentName = n
      self.studentCourse = c
      self.averageMark = a
      self.grade = g
      self.assignmentScores = m

    def getName(self):
      return self.studentName

    def getCourse(self):
      return self.studentCourse

    def getAverage(self):
      return self.averageMark

    def getGrade(self):
      return self.grade

    def getMarks(self):
      return self.assignmentScores


    def setAverage(self):
      mark = self.averageMark
      return mark

    def setGrade(self):
      grade = self.grade
      return grade

    def setMarks(self):
      marks = self.setMarks()
      return marks

    def addMark(self):
      score = list.append(self, self.assignmentScores)




    def calculateAverage(self):
      if  len(self.assignmentScores) > 0:
        average = sum(self) / float(len(self.assignmentScores))
        return average
      else:
        return 0

    def determineGrade(self):
      return 0

    print(calculateAverage(assignmentScores))

1 个答案:

答案 0 :(得分:0)

首先,请使用4个空格进行所有缩进,这有很大帮助。 PEP 8是你的朋友,会让每个人都友好和乐于助人。

至于你的问题,在自己运行代码并查看回溯之后,看起来你已经将self.assignmentScores列表分配给self本身了,所以当你输入self.assignmentScores时,你正在查找self的属性,现在是一个列表而不是该类的实例。

这个错误来自你调用方法的方式: calculateAverage(assignmentScores)

这个方法只需要一个参数,它应该是Student类的一个实例,但不仅是你直接从类而不是实例调用方法,而是使用assignmentScores列表作为参数方法。这使得computeAverage()方法用self替换self.assignmentScores,因此当您尝试检查列表是否为空时,代码将其读取为self.assignmentScore.assignmentScore而不是预期的方式。

此刻定义类的方式强烈鼓励您调用此方法。

billy = Student("","",0,"none",[1,2,3,4]) print(billy.calculateAverage())

解决此问题后,还有另一个错误,但仔细查看回溯并仔细阅读相关代码将引导您找到解决方案。现在你需要的是更好地理解类和调用方法的工作。