Я новичок в использовании BoundedNumericProperty.Мне нужно ограничить значение переменной, скажем, с именем «насыщенность», от 0 до 1, чтобы, если я попытаюсь установить значение больше 1, я получу 1, если меньше 0, то 0.
Я узнал, что это можно сделать так:
saturation = BoundedNumericProperty (
0.1,
min = 0,
max = 1.,
errorhandler = lambda x: min (max (x, 0), 1))
Этот код работает правильно, но он недостаточно удобен из-за обработчика ошибок.
Как видите, проблема в том,что у меня есть ненужные магические числа в обработчике ошибок (0 и 1), которые дублируют значения аргументов min и max.
Я рассмотрел различные примеры использования BoundedNumericProperty на Github, и я вижу это почти во всех примерах.
Вместо этого я хотел бы просто написать что-то вроде:
saturation = MyProperty (
0.1,
min = 0,
max = 1.,)
, и я бы хотел, чтобы это свойство работало следующим образом:
class MyProperty(BoundedNumericProperty):
def __init__(*args, min=0, max=1, **kwargs):
super().__init__(*args, min=min, max=max, errorhandler=lambda x: min(max(x, min), max), **kwargs)
Но здесь я получаю
super().__init__(*args, min=min, max=max, errorhandler=lambda x: min(max(x, min), max), **kwargs)
RuntimeError: super(): no arguments
(python3)
Как это реализовать?