Как объединить вызываемое перечисление с многозначным (aenum)

#python

#python

Вопрос:

Я пытаюсь использовать вызываемое перечисление для интерполяции простых функций на естественном языке. Это означает, что мое перечисление должно быть извлечено с помощью токена, но также содержать лямбда-функцию для использования.

Я нашел следующий код, чтобы создать необходимый мне вызываемый аспект;

 class FuncEnum(Enum):
    def __init__(self, val, func=None):
        self.val = val
        self.func = func or (lambda x, y: None)
    def __call__(self, *args, **kwargs):
        return self.func(*args, **kwargs)
 

Но мне также нужно получить перечисление, используя его первое значение. Для этого обычно требуется aenum.

 class Operators(FuncEnum):
    ADD = (' ', lambda x, y: x y)
    SUB = ('-', lambda x, y: x-y)
    MULT = ('*', lambda x, y: x*y)
    DIV = ('/', lambda x, y: x/y)

    @staticmethod
    def do(token, x, y):
        opr = Operators(token)
        return opr(x,y)
 

tldr; Мне нужен мой метод ‘do’ для работы

Я знаю, что эти четыре можно упростить, но я собираюсь добавить еще, как только эти четыре будут работать для более сложных операций.

Комментарии:

1. зачем использовать перечисление вместо словаря? Я думаю, что это чрезмерно. Можете ли вы объяснить ожидаемый программный поток?

2. Выше приведен код для чтения и анализа «естественного» языка в поисках ключевых символов для обозначения равенства. Когда он находит его, он пытается создать токены из строки (включая эти операции) и поместить их в стек для последующей оценки.

3. Имеет ли значение, что имя, используемое для поиска счетчиков, является самим именем класса?

4. Я не совсем уверен, что понимаю вопрос, но если да, то это не имеет значения. Только то, что его можно найти по первому значению и вызвать со вторым (лямбда-функция)