はじめに

備忘メモです。

同じメソッドを用意して、その結果をそのまま次の引数に渡すような処理をする場合
OrderedDictを利用すると便利ですね

サンプルコード

単純ですが、それぞれのクラスに calc というメソッドを用意して、
その結果を引数に渡していくような処理を書いています

OrderedDictを利用することで、計算処理を2行のループとして記載できます

このとき、実行順はOrderedDictに格納した順番に実行されます

from collections import OrderedDict

class AddClass:
    def __init__(self):
        pass
    def calc(self, x):
        y = x + 1
        return y

class SubClass:
    def __init__(self):
        pass
    def calc(self, x):
        y = x - 1
        return y

class DivClass:
    def __init__(self):
        pass
    def calc(self, x):
        y = x / 2
        return y
class MulClass:
    def __init__(self):
        pass
    def calc(self, x):
        y = x * 2
        return y

# Main

print ("====== 1st =======")
mydict = OrderedDict()
mydict['Add'] = AddClass()
mydict['Sub'] = SubClass()
mydict['Div'] = DivClass()
mydict['Mul'] = MulClass()

x = 1
print(x)
for val in mydict.items():
    print(val[0]) # print key
    x = val[1].calc(x)
    print(x)


print ("====== 2nd =======")
mydict.clear()
mydict['Div'] = DivClass()
mydict['Add'] = AddClass()
mydict['Mul'] = MulClass()
mydict['Sub'] = SubClass()

x = 1
print(x)
for val in mydict.items():
    print(val[0]) # print key
    x = val[1].calc(x)
    print(x)


実行結果


====== 1st =======
1
Add
2
Sub
1
Div
0.5
Mul
1.0
====== 2nd =======
1
Div
0.5
Add
1.5
Mul
3.0
Sub
2.0