我不明白这个问题的含义或如何解决它! 我一直遇到问题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))
答案 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())
解决此问题后,还有另一个错误,但仔细查看回溯并仔细阅读相关代码将引导您找到解决方案。现在你需要的是更好地理解类和调用方法的工作。