Почему мой сеттер python не вызывается? - PullRequest
0 голосов
/ 14 июля 2020

Может кто-нибудь поможет? Я новичок в python и часами смотрю на эту проблему.

У меня есть человек и класс студентов, и я учусь проверять ввод с помощью геттеров / сеттеров. Класс person принимает имя, фамилию, возраст и пол, и все они правильно вызывают сеттер. Когда я добираюсь до среднего балла в классе студентов, он не вызывает установщика и продолжает выдавать ошибку, потому что пытается добавить средний балл к общему баллу моего студента перед его проверкой. Пожалуйста помоги! Мой код ниже.

ЭТОТ КЛАСС РАБОТАЕТ ПРАВИЛЬНО:

class Person:
   'Common base class for all people'
   
   intPeopleCount = 0   
      
   def __init__(self, firstname, lastname, age, gender):
      self.firstname = firstname
      self.lastname = lastname
      self.age = age
      self.gender = gender
      Person.intPeopleCount += 1

   @property
   def firstname(self):
       return self.__firstname

   @property
   def lastname(self):
       return self.__lastname

   @property
   def age(self):
       return self.__age

   @property
   def gender(self):
       return self.__gender

   @firstname.setter 
   def firstname(self, firstname):
       if firstname == " ":
           raise Exception('Must input first name.')
       else:
           self.__firstname = firstname

   @lastname.setter
   def lastname(self, lastname):
       if lastname == " ":
           raise Exception('Must input last name.')
       else:
           self.__lastname = lastname

   @age.setter
   def age(self, age):
       if age == " ":
           raise Exception('Must input age.')
       if int(age) < 0:
           raise Exception('Age cannot be less than 0.')
       else:
           self.__age = age

   @gender.setter
   def gender(self, gender):
       if gender.lower() != 'female':
           if gender.lower() != 'male':
               raise Exception('Gender must be male or female.')
           else:
               self.__gender = gender
       else:
           self.__gender = gender

ЭТО ОШИБКИ БРОСА КЛАССА - Установщик GPA не вызывается !!

#Import Person Class
import PersonClass as person

class Student(person.Person):
    'Common base class for all students'

    intStudentCount = 0
    intFemaleCount = 0
    intMaleCount = 0
    dblGPATotal = 0
    intFemaleAgeTotal = 0
    intMaleAgeTotal = 0

    def __init__(self, firstname, lastname, age, gender, GPA):
        person.Person.__init__(self, firstname, lastname, age, gender)
        self.GPA = GPA

        if (gender == 'Male'):
            Student.intMaleCount += 1
            Student.intMaleAgeTotal += int(age)
        else:
            Student.intFemaleCount += 1
            Student.intFemaleAgeTotal += int(age)

        Student.dblGPATotal += GPA
        Student.intStudentCount += 1

        @property 
        def GPA(self):
            return self.__GPA

        @GPA.setter
        def GPA(self, GPA):
            if GPA == " ":
                raise Exception('Must input GPA.')
            elif GPA < 0:
                raise Exception('GPA must be 0.00 or higher.')
            elif GPA > 4.0:
                raise Exception('GPA must be 4.00 or lower.')
            else:
                self.__GPA = GPA 

Спасибо D:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...