2017-02-04 2 views
-2

Нужна помощь с этим вопросом:Python: как прописать диапазон переменного класса

писать классы, которые удовлетворяют следующую спецификацию:

  • Студент имеет имя (произвольная строка) и а число (целое число в диапазоне 1000-9999).
  • Попытка создать объект Student с номером за пределами заданного диапазона вызывает InvalidNumberError.
  • Студенческие объекты имеют только одно поведение: строковое представление Студента состоит из имени ученика, за которым следует двоеточие и пробел, а затем номер ученика.

Как указать диапазон номера студента?

+1

Посмотрите на Python классы, '__init__', оператор' raise' и метод '__str__'. – Harvey

+0

http://meta.softwareengineering.stackexchange.com/questions/6166/open-letter-to-students-with-homework-problems – EJoshuaS

ответ

0

Посмотрите свойства Python: http://www.python-course.eu/python3_properties.php

Не только эта проверка, что number действует на инстанциации Student, но будет проверять каждый раз, когда вы Student.number:

class Student: 

    valid_range = range(1000, 10000) # legal values will be 1000-9999 

    def __init__(self, name, number): 
     self.name = name 
     self.number = number 

    def __repr__(self): 
     return '{}: {}'.format(self.name, self.number) 

    @property 
    def number(self): 
     return self._number 

    @number.setter 
    def number(self, number): 
     if number in Student.valid_range: 
      self._number = number 
     else: 
      raise ValueError('Student number out of range: {}'.format(number)) 
Смежные вопросы