関数のリストを呼び出してリスト内包表記を使用できますか?
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()
それは機能しますか?
もちろん、FábioDinizが言ったように:)、ただし、クラスメソッドを呼び出し可能として使用する場合は、オブジェクトを引数として指定する必要があります。
_fobj= F()
for f in fobj.fl:
f(fobj)
_
メソッドdef funcX(self):
の定義を見ると、メソッドは1つの引数 "self"を必要とするため、オブジェクトはcallableの引数として指定する必要があります
>>> [f() for f in fl]
[1, 2, 3]
絶対に:)
はい、できます。結果のリストには、関数の戻り値が保持されます。
はい、できます-関数は意図したとおりに呼び出されます。