2014-12-01 118 views
0

对不起,可能是一个愚蠢的问题,但我是非常非常新的python和创建我的第一个类之一。但它给错误,我有点无知。下面是代码Python class给出错误Traceback

class Student: 
    studentCount = 0 
    averageGPA = 0 

    def __init__(self, studentID, studentName, studentGPA): 
     self.studentID = studentID 
     self.studentName = studentName 
     self.studentGPA = studentGPA 
     Student.studentCount += 1 
     Student.averageGPA += 3 

    def displayCount(self): 
     print ("Total Students %d" % Student.studentCount) 

    def displayStudent(self): 
     print ("ID : ", self.studentID, ", Name : ", self.studentName, ", GPA : ", self.studentGPA) 
    def averageGPA(self): 
     print("Average GPA is : %d" % Student.averageGPA/Student.studentCount) 

def main(): 
    student1 = Student("54466","Zara", 3) 
    student2 = Student("48887","Manni", 4) 
    student3 = Student("41187","Sam", 3) 
    student1.displayStudent() 
    student2.displayStudent() 
    print ("Total Students %d" % Student.studentCount) 
    print ("Student's average GPA %d" % Student.averageGPA) 

main() 

,它是给错误是

Traceback (most recent call last): 
    File "Z:/CS 120/lab7_2.py", line 29, in <module> 
    main() 
    File "Z:/CS 120/lab7_2.py", line 21, in main 
    student1 = Student("54466","Zara", 3) 
    File "Z:/CS 120/lab7_2.py", line 10, in __init__ 
    Student.averageGPA += 3 
TypeError: unsupported operand type(s) for +=: 'function' and 'int' 

请帮我解决这个问题。再次抱歉,如果这个问题听起来很愚蠢,因为我很新!

+0

你逝去的GPA作为字符串=有没有理由这样做呢? – 2014-12-01 17:10:33

+0

以及它的一个数字,所以可以通过int也。请参阅编辑 – Gavin 2014-12-01 17:11:36

+0

'averageGPA'是一个函数,而不是一个字符串,所以您不能将'studentGPA'添加到它。 – Kevin 2014-12-01 17:11:42

回答

0

你是通过gpa作为字符串:是否有理由这样做。它会更好,如果你这样做:

student1 = Student("54466","Zara", 3) 

正如其他人也是AverageGPA是一个方法的名字说,所以你需要的类属性的另一个名称。

你也可能会发现你的平均就会出来错的,如果你正在使用Python 2.7

+0

已尝试,但没有工作 – Gavin 2014-12-01 17:12:59

+0

现在它说'追溯(最近一次呼叫最后): 文件“Z:/ CS 120/lab7_2.py”,第29行,在 main() 文件“Z:/ CS 120/lab7_2.py“,第21行,主要为 student1 =学生(”54466“,”Zara“,3) 文件”Z:/ CS 120/lab7_2.py“,第10行,在__init__中 Student.averageGPA + = studentGPA TypeError:不支持的操作数类型(s)+ =:'function'和'int'' – Gavin 2014-12-01 17:13:26

+0

阅读整个答案....我做了一个编辑... – 2014-12-01 17:14:12