これは、最初のマシンにいくつかのデータを入れ、それを最初のバッファに移動し、次にそれを 2 番目のマシンに移動するという、私が作成したばかげた例です ...
各マシンは ID 番号でデータにタグを付けて渡すだけですが、マシンに何でもさせることができます。データを取得するときに各マシンで呼び出される関数を登録することもできます。
class Machine(object):
def __init__(self,number,next=None):
self.number=number
self.register_next(next)
def register_next(self,next):
self.next=next
def do_work(self,data):
#do some work here
newdata='%s %d'%(str(data),self.number)
if(self.next is not None):
self.next.do_work(newdata)
class Buffer(Machine):
def __init__(self,number,next=None):
Machine.__init__(self,number,next=next)
data=None
def do_work(self,data):
if(self.next is not None):
self.next.do_work(data)
else:
self.data=data
#Now, create an assembly line
assembly=[Machine(0)]
for i in xrange(1,20):
machine=not i%2
assembly.append(Machine(i) if machine else Buffer(i))
assembly[-2].register_next(assembly[-1])
assembly[0].do_work('foo')
print (assembly[-1].data)
編集
バッファもマシンになりました。