class Example:
def __init__(self, name):
self.name = name
def __repr__(self):
return f'Example({self.name!r})'
def __add__(self, other):
print(f"Evaluating {self} + {other}")
return Example('addition result')
def __mul__(self, other):
print(f"Evaluating {self} * {other}")
return Example('multiplication result')
a = Example('a')
b = Example('b')
c = Example('c')
d = Example('d')
a + b + c * d
Y2xhc3MgRXhhbXBsZToKCWRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKCQlzZWxmLm5hbWUgPSBuYW1lCglkZWYgX19yZXByX18oc2VsZik6CgkJcmV0dXJuIGYnRXhhbXBsZSh7c2VsZi5uYW1lIXJ9KScKCWRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKCQlwcmludChmIkV2YWx1YXRpbmcge3NlbGZ9ICsge290aGVyfSIpCgkJcmV0dXJuIEV4YW1wbGUoJ2FkZGl0aW9uIHJlc3VsdCcpCglkZWYgX19tdWxfXyhzZWxmLCBvdGhlcik6CgkJcHJpbnQoZiJFdmFsdWF0aW5nIHtzZWxmfSAqIHtvdGhlcn0iKQoJCXJldHVybiBFeGFtcGxlKCdtdWx0aXBsaWNhdGlvbiByZXN1bHQnKQoKYSA9IEV4YW1wbGUoJ2EnKQpiID0gRXhhbXBsZSgnYicpCmMgPSBFeGFtcGxlKCdjJykKZCA9IEV4YW1wbGUoJ2QnKQoKYSArIGIgKyBjICogZA==