class Operator: def __init__(self, symbol, precedence): self.symbol = symbol self.precedence = precedence def __repr__(self): return self.symbol def __call__(self): raise NotImplemented class Adder(Operator): def __init__(self): super().__init__('+', 1) def __call__(self, a, b): return a + b class Subtracter(Operator): def __init__(self): super().__init__('-', 1) def __call__(self, a, b): return a - b class Multiplyer(Operator): def __init__(self): super().__init__('*', 2) def __call__(self, a, b): return a * b class Divider(Operator): def __init__(self): super().__init__('/', 2) def __call__(self, a, b): return a / b STANDARD_OPERATORS = { '+': Adder(), '-': Subtracter(), '*': Multiplyer(), '/': Divider(), }