2014-12-01 1 views
0

извините за глупый вопрос, может быть, но я очень новичок в python и создал один из моих первых классов. Но это дает ошибку, и я не знаю. Вот кодPython класс, дающий ошибку 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

вы передаете ГПД в виде строки = есть причина, чтобы сделать это? –

+0

ну его число так может быть передано int также. см. отредактированный – Gavin

+0

'averageGPA' - это функция, а не строка, поэтому вы не можете добавить в нее' studentGPA'. – Kevin

ответ

0

вы передаете gpa как строку: есть ли причина для этого. Было бы лучше, если бы вы сделали это:

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

Как уже сказал также, что AverageGPA это имя метода, так что вам нужно другое имя для атрибута класса.

и вы, вероятно, обнаружите, что ваш средний выйдет не так, если вы используете Python 2.7

+0

пытался, но не получилось – Gavin

+0

теперь говорит 'Traceback (самый последний вызов последнего): Файл "Z:/CS 120/lab7_2.py", строка 29, в основной() Файл«Z:/CS 120/lab7_2.py ", строка 21, в основном student1 = Студент (" 54466 "," Zara ", 3) Файл" Z:/CS 120/lab7_2.py ", строка 10, в __init__ Студент. + = studentGPA ТипError: неподдерживаемый тип операндов для + =: 'function' и 'int'' – Gavin

+0

прочитать весь ответ .... Я сделал редактирование ... –