from functools import partial

class Tree:
	def __init__(self, op, left, right):
		self.op = op
		self.left = left
		self.right = right
	
	@classmethod
	def reducer(cls, left, right, ops):
		return cls(
			op = ops.pop(0), #shift
			left = left,
			right = right
		)
	
	def __str__(self):
		return '({self.left} {self.op} {self.right})'.format(self=self)


ops = ['+', '-', '*']
x = [1, 2, 3, 4]

reducer = partial(Tree.reducer, ops = ops)

ret = reduce(reducer, x)

print(ret)