2011-03-28 4 views
22

함수 목록을 호출하고 목록 이해를 사용할 수 있습니까?목록 이해를 사용하여 함수 목록 호출

def func1():return 1 
def func2():return 2 
def func3():return 3 

fl = [func1,func2,func3] 

fl[0]() 
fl[1]() 
fl[2]() 

은 내가

for f in fl: 
    f() 

할 수있는 알고 있지만 나는 아래 할 수 있습니까? 함수 내 목록 예를 들어, 클래스에있는 경우

[f() for f in fl] 

그런 종류의 사람들에 대한 추가 질문

class F: 

    def __init__(self): 
     self.a, self.b, self.c = 0,0,0 

    def func1(self): 
     self.a += 1 

    def func2(self): 
     self.b += 1 

    def func3(self): 
     self.c += 1 

    fl = [func1,func2,func3] 

fobj= F() 

for f in fobj.fl: 
    f() 

가 작동합니까?

+9

대화식 모드에서 어떤 시도를하지 않습니까? – MAK

+1

그냥 질문이 생각 났을 때 파이썬 셸을 가지고 있지 않았다. 작동하지 않는다. –

+0

http://docs.python.org/release/3.2/tutorial/datastructures.html#list- 이해 –

답변

14

당신은 파 비우 디 니즈는 :)이 는 그러나, 호출로 사용되는 클래스 메소드를 들어, 객체가 인수로 제공해야합니다 말했다 수 메소드의 정의를 볼 때 메소드가 하나의 인수를 요구하기 때문에 호출 가능 객체에 대한 인수가 def funcX(self):이므로 자체

+0

감사합니다. 도움이되었습니다. –

15
>>> [f() for f in fl] 
[1, 2, 3] 

은 물론 : 예,

0

을 할 수 - 의도 한대로 기능이 호출됩니다.

1

예, 가능합니다. 결과 목록에는 함수의 반환 값이 저장됩니다.

fobj= F() 

for f in fobj.fl: 
    f(fobj) 

개체가 같이 제공해야합니다 : 물론