Правильное использование геттера / сеттера для значений словаря

Я новичок в Python, так что если есть что-нибудь здесь это категорически плохо, пожалуйста, укажите на это.

У меня есть объект с этим словарем:

traits = {'happy': 0, 'worker': 0, 'honest': 0}

Значение для каждого признака должно быть целым числом в диапазоне 1-10, и нельзя добавлять новые признаки. Мне нужны геттеры / сеттеры, чтобы я мог убедиться, что эти ограничения соблюдаются. Вот как я сейчас создал геттер и сеттер:

def getTrait(self, key):
    if key not in self.traits.keys():
        raise KeyError

    return traits[key]

def setTrait(self, key, value):
    if key not in self.traits.keys():
        raise KeyError

    value = int(value)

    if value < 1 or value > 10:
        raise ValueError

    traits[key] = value

Я прочитал на этом веб-сайте о методе property () . Но я не вижу простого способа использовать его для получения / установки значений внутри словаря. Есть лучший способ это сделать? В идеале я хотел бы использовать этот объект obj.traits ['happy'] = 14 , который будет вызывать мой метод установки и генерировать ValueError, поскольку 14 больше 10.

12
задан illright 24 September 2017 в 17:38
поделиться