can I call a list of functions and use list comprehension?
def func1():
return 1
def func2():
return 2
def func3():
return 3
fl = [func1, func2, func3]
fl[0]()
fl[1]()
fl[2]()
I know I can do
for f in fl:
f()
but can I do below ?
[f() for f in fl]
A additional question for those kind people, if my list of functions is in class, for example
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()
does it work?
Of course you can as Fábio Diniz said :)
However for the class method when used as a callable, an object must be given as an argument:
fobj = F()
for f in fobj.fl:
f(fobj)
The object must be given as an argument to the callable because when you look at the definition of the method def funcX(self):
the method needs one argument self