class Operator(object):
def __init__(self, task_id):
self.task_id = task_id
def __rshift__(self, other):
if isinstance(other, Operator):
print('%s=>%s' % (self.task_id, other.task_id))
elif isinstance(other, list):
for item in other:
print('%s=>%s' % (self.task_id, item.task_id))
return other
def __lshift__(self, other):
if isinstance(other, Operator):
print('%s<=%s' % (self.task_id, other.task_id))
elif isinstance(other, list):
for item in other:
print('%s<=%s' % (self.task_id, item.task_id))
return other
def __rrshift__(self, other):
self.__lshift__(other)
return self
def __rlshift__(self, other):
self.__rshift__(other)
return self
if __name__ == '__main__':
a = Operator('a')
b = Operator('b')
c = Operator('c')
d = Operator('d')
a >> [b, c] >> d