2016-05-30 6 views
1

私は、以下の機能を持っている辞書に別のエントリを参照する動的な機能を作成する:は、Python 3

def mapLocation1(): 
if rooms[1]["mapLoc"] == rooms[currentRoom]["mapLoc"]: 
    #return(stuff) 
elif "item" in rooms[1]: 
    #return(stuff) 
else: 
    #return(stuff) 

この特定の機能は、私のプログラムまで、おそらく3十回に数回使用見ることができます。もちろん、上の関数を何度もコピーして素敵なコードにするのではなく、変更するのが面倒で、とにかく展開される可能性が高いので、私はそれを動的な関数にしたいと思います。しかし、私のコードでは別の場所に設定した辞書を参照しています。この数は、常に上記のコードで使用mapLocation番号()と同じもので、

rooms = { 
     1 : { 
      "mapLoc" : 1, 
      #MoreStuff 
      }, 

     2 : { 
      "mapLoc" : 2, 
      #MoreStuff 
      }, 
     } 

辞書内のいくつかのサブセットが番号が付けられている:この辞書は次のようになります。辞書のエントリは、コンテンツの性質上、手作業で定義する必要がありますが、関数を書くのではなくダイナミックにすることができれば、言及されている数とは別の数十もの関数は、私の好み。 Using the answer to this question I found the following code to make a function dynamic

def makefunc(val): 
    def somephase(): 
     return '%dd' % (val,) 
    return somephase 

Phase2 = makefunc(2) 
Phase3 = makefunc(3) 

はしかし、私はそれをダイナミックにするために、私の機能と組み合わせることを試みましたが、これまで私は運がなかったしました。どのように私はこれを行うことができるかについてのアイデアはありますか?

答えて

0

これを実現するためにインスタンスとクラスを使用することはどうですか?

共有ディクショナリをクラスレベルで保存し、オブジェクトごとに異なる動作を実装することもできます。