#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. Я не совсем уверен, что понимаю вопрос, но если да, то это не имеет значения. Только то, что его можно найти по первому значению и вызвать со вторым (лямбда-функция)