Как правильно задать список возможных значений для атрибута объекта?
Как правильно задать список возможных значений для атрибута объекта?
Например:
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 , или есть более правильный способ это сделать?
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
Передавать значение переменной не присвоением значения, а через метод set_priority, в котором и будет проводиться проверка. Например так:
class Task():
def set_priority(self, priority):
if priority in ['low', 'medium', 'high']:
# Делаем что-то хорошее, например
self.priority = priority
else:
# Выводим ошибку