2017-01-20 6 views
0

У меня есть родительский класс, называемый StudentBody, и дочерний класс MathStudentBody. Мой вопрос: как я могу объяснить класс ребенка, чтобы найти общее количество студентов в классе? Думаю, нам нужно выяснить общее количество созданных объектов? Может кто-нибудь мне точку в правильном направленииНайти общее количество студентов

class StudentBody: 

    count = 0 
    def __init__(self, name,gender,year,gpa): 
     self.name = name 
     self.gender = gender 
     self.year = year 
     self.gpa = gpa 
     self.count+= 1 

    def IsFreshman(self): 
     print "I am the StudentBody method" 
     if self.year == 1: 
      return True 
     else : 
      return False 

    def countTotal(self): 
     return self.count 

class MathStudentBody(StudentBody): 

    def __init__(self,name,gender,year,gpa,mathSATScore): 
     #super(MathStudentBody,self).__init__(name,gender,year,gpa) 
     StudentBody.__init__(self,name,gender,year,gpa) 
     self.MathSATScore = mathSATScore 

    def IsFreshman(self): 
     print "I am the MathStudentBody method" 


    def CombinedSATandGPA(self): 
     return self.gpa*100 + self.MathSATScore 

    def NumberOfStudents(self): 
     return 
+0

В своем коде вы звоните 'self.count + = 1', разве это не обязательно? –

+0

@WillemVanOnsem: нет, это будет просто доступ к 'StudentBody.count'. –

ответ

1

вы имеете в виду что-то вроде этого (урезанная код к минимуму ...)

class StudentBody: 
    count = 0 
    def __init__(self): 
     StudentBody.count+= 1 

class MathStudentBody(StudentBody): 
    count = 0 
    def __init__(self): 
     super().__init__()      # python 3 
     # super(MathStudentBody, self).__init__() # python 2 
     MathStudentBody.count+= 1 

s = StudentBody() 
ms = MathStudentBody() 

print(StudentBody.count) # 2 
print(MathStudentBody.count) # 1 

к сведению, что я изменил доступ к переменной класса до StudentBody.count (от self.count, который работает, если вы читаете только, но как только вы присвоите что-то self.count, изменение повлияет только на экземпляр self, а не на класс). и звонок super().__init__() в MathStudentBody также увеличится StudentBody.count.

(Body.count ... смешок!)

Смежные вопросы