2016-12-14 4 views
1

私はなど、"task3""task2""task1"という名前の25の異なる機能を持っている... :getattrを使用した場合と同じファイルから関数を呼び出すにはどうすればよいですか?私は別のファイルからこれらの関数を呼び出すとシェルでそれらを行うことができます現時点では私のプログラムで

import examplefilename 
tasknum = str(input("Which task would you like to see? ")) 
task = "task" + tasknum 
methodToCall = getattr(examplefilename, task) 
result = methodToCall() 

何私は、同じファイルからこのようにして関数を実行するにはどうしたらよいでしょうか?

+1

python 3では既に 'string'を' input'に呼び出す必要はありません。これは既に文字列であり、Python 2では代わりに 'raw_input'を使うべきです – Copperfield

答えて

1

私の理解が正しい場合、関数は同じファイルに定義されており、呼び出すにはユーザー入力が必要です。getattrの代わりにglobalsを使用してください。

getattrを置き換える、次のとおりです。そのまま残りを維持

methodToCall = globals()[task] # it isn't a method, though 

コメントでも指摘したように、strを使用してinputをラップすることは余計です。inputは既に文字列を返します。

関連する問題