2016-09-28 8 views
-1

私の質問はここのようですが、分かりません。Pythonで呼び出しの関数リストを作成するには

How to add a function call to a list?

私は約10のコマンドがあったが、それらはすべて、特定の目的を務めたので、彼らは変更できませんでしたが、私はそれらを呼び出すことなく、リストに入れたい場合。

def print_hello(): 
    print("hello") 
command_list=[print_hello()] 

これは私がcommand_list[0]を入力すると、それはprint_hello()を行うなるように、私はそれを得るだろうか[None]

に等しいcommand_listを残し、その後、"hello"を印刷しますか?

+3

*「command_list [0]と入力すると、print_hello()が実行されるようになります。」* - ほとんどありません。 'command_list [0]()'はできますか? – deceze

+2

'command_list = [print_hello]' –

+1

インデックスでアクセスしてオブジェクトを作成するには、独自のカスタムリストを作成して '__getitem__'が' __call__'を呼び出さなければなりません。あるいは、@decezeが示唆するように、関数をリストに置き、呼び出すときに呼び出すだけです。 – jonrsharpe

答えて

3

あなたがそれらを呼び出すことなく、リストに追加したい場合は、単にそれらを呼び出すことを控える:

command_list=[print_hello] 

あなたがそれらを呼び出したい時には、それらを呼び出す:

command_list[0]() 

の場合command_list[0]を実行するだけで何かが起こりたい場合は、listをサブクラス化して

def __getitem__(self, index): 
    item = list.__getitem__(self, index) 
    return item() 

(未テスト)。その後、リスト上で操作を取得すると、その関数が呼び出されます。

+1

'command_list [0]()'が完璧です、ありがとう –

関連する問題