はじめに
備忘メモです。同じメソッドを用意して、その結果をそのまま次の引数に渡すような処理をする場合
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
コメント