zasqer
@zasqer

Как правильно задать список возможных значений для атрибута объекта?

Как правильно задать список возможных значений для атрибута объекта?

Например:
1) есть класс Task,
2) есть экземпляр класса task,
3) у него есть атрибут task.priority,
4) который должен принимать значения options = ['low', 'medium', 'high'].

В результате я должен иметь возможность:
1) задать task.priority = 'low'
2) получить ошибку, если я попробую задать task.priority = 'something else'

Как вариант можно проверять в конструкторе класса if value in options , или есть более правильный способ это сделать?
  • Вопрос задан
  • 2590 просмотров
Решения вопроса 1
crazyzubr
@crazyzubr
Python backend-developer
class Task(object):
    
    @property
    def priority(self):
        return self._priority

    @priority.setter
    def priority(self, value):
        if value not in ('low', 'high', 'medium'):
            raise ValueError('Incorrect priority value')
        self._priority = value
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Andrbez
@Andrbez
Procrastination
Передавать значение переменной не присвоением значения, а через метод set_priority, в котором и будет проводиться проверка. Например так:
class Task():
    def set_priority(self, priority):
        if priority in ['low', 'medium', 'high']:
            # Делаем что-то хорошее, например
            self.priority = priority
        else:
            # Выводим ошибку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы