Модуль оператора Python предоставляет функции, соответствующие всем встроенным операторам, поэтому вы можете написать:
import operator
class Condition:
def __init__(self, value1, op, value2):
self.value1 = value1
self.op = op
self.value2 = value2
def test(self):
return self.op(self.value1, self.value2)
condition = Condition(5, operator.gt, 4)
if condition.test():
print("passed")
else:
print("failed")
Если вы хотите передать строки вместо функций, вы можете использовать dict
для их отображения:
import operator
OPERATOR_SYMBOLS = {
'<': operator.lt,
'<=': operator.le,
'==': operator.eq,
'!=': operator.ne,
'>': operator.gt,
'>=': operator.ge
}
class Condition:
def __init__(self, value1, op, value2):
self.value1 = value1
self.op = op
self.value2 = value2
def test(self):
return OPERATOR_SYMBOLS[self.op](self.value1, self.value2)
condition = Condition(5, '>', 4)
if condition.test():
print("passed")
else:
print("failed")