クラスのオブジェクトが作成された「モード」に依存する f メソッドを持つクラスを作成したいと思います。
以下のコードは機能しませんが、私がやろうとしていることを理解していただければ幸いです。私の考えは、各モードの設定を定義する辞書を用意することです (この場合、関数またはメソッドを self.f に割り当てるため、init 関数で多くの if elif ステートメントを使用するのではなく、正しい値を割り当てるだけです)。辞書を使って。
class A(object):
_methods_dict={
'a':A.f1,
'b':A.f2
}
def __init__(self,mode = 'a'):
self.f = _methods_dict[mode]
def f1(self,x):
return x
def f2(self,x):
return x**2
なぜこれが機能しないのか理解できません。どうすれば修正できますか? また、同じ種類の機能を取得するためのより良い (そしてより Pythonic な) アプローチはありますか?