2016-09-28 4 views
-1

제 질문은 여기에있는 것과 같습니다. 그러나 나는 이해하지 못합니다.파이썬에서 호출을위한 함수 목록을 만드는 방법

How to add a function call to a list?

나는 약 10 명령을했고, 그들은 모두 특정 목적을 제공, 그래서 그들은이 수정되지 않을 수 있지만, 내가 그들을 호출하지 않고 목록에 넣어 싶어합니다.

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

이것은 단지 다음, "hello" 인쇄 내가 command_list[0]를 입력 할 때, 그것은 print_hello()을 수행 할 수 있도록

가 어떻게 그것을 얻을 것이다 command_list 동일 [None]에 떠날 것인가? 당신은 단지 그들을 호출 자제를 호출하지 않고 목록에 추가하려면

+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]()'이 (가) 완벽합니다. 감사합니다. –

관련 문제