2017-10-31 10 views
0

私は関数の配列を持っており、それらをインデックスで呼びたいと思います。値を返します(「リスト」オブジェクト呼び出すことはできませんTypeError例外)がPythonの配列インデックスで関数を呼び出す

kFunc = [Row(a,value, row), Col(a,value,col), Gridval(a,value, row, col), Grid(a, value), Rectangle(a, value, row, col) ] 
    k = random.randint(1,4) 
    for j in range(k): 
     output = kFunc[j]() 

各機能が 次のコードは私にエラーを与えます。私はkFunc[j]()kFunc[j]に置き換えようとしました。私は何のエラーも出なかったが、5つの機能すべてが実行されている。

私は同様の質問を見つけました。here私の質問に対する答えは分かりません。

ご協力いただきありがとうございます。ありがとう

答えて

2

,Colなどがあなたが話している機能であると仮定して、おそらく戻り値のリストを作成しました。関数内でそれらをラップするには、次の操作を実行できます。

kFunc = [ 
    lambda: Row(a,value, row), 
    lambda: Col(a,value,col), 
    lambda: Gridval(a,value, row, col), 
    lambda: Grid(a, value), 
    lambda: Rectangle(a, value, row, col) 
] 

output = kFunc[random.randint(0,4)]() # will only do one of the lambda-wrapped operations 
+0

うわー、これは機能します。どうもありがとう。 – Shankar

関連する問題