from OperatorWrapper import MyWrapper, X @MyWrapper class MyInt(int): types = { '<|': lambda a, b: (a+b) * 2, '||': lambda a, b: (a+b+b), '^^^^': lambda a, b: (a - b), '<^|^': lambda a, b: (a - 4 + b), '||^^//&&%%**': lambda a, b: (-(a+b)), '>|^/&%*': lambda a, b: (a * b) } def hello(self): print('world') myWrappedInt = MyInt(3) print(myWrappedInt (3+3)*2 => 6*2 => 12 print(myWrappedInt |X| 4) # (3+4+4) => 11 print(myWrappedInt ^X^X^X^ 4) # (3 - 4) => -1 print(myWrappedInt 4 print(myWrappedInt |X|X^X^X/X/X&X&X%X%X*X* 4) # -(3+4) => -7 print(myWrappedInt >X|X^X/X&X%X* 5) # (3*5) => 15 PLACEHOLDER = X print(myWrappedInt (3+3)*2 => 6*2 => 12 myWrappedInt.hello()