I’m trying to create a dictionary where each value is a list of functions that should get executed when calling the value. Here’s some pseudo-code:
functions = {
"A": (execute() for execute in [func1(param1), func2(param1)]),
"B": (execute() for execute in [func1(param2), func2(param2)]),
}
But if I try to call this using functions["A"]() an exception is thrown saying “TypeError: ‘generator’ object is not callable”.
How should I approach this problem?
EDIT: Just to clarify, the functions are not generators nor have any return type. They just execute some actions based on the parameter.
Advertisement
Answer
ACCEPTED ANSWER:
Thanks to all of your suggestions, I came up with a solution. I’m just going to leave the code here:
def move(params): # params is a list of 5 parameters of different types
# Execute move
def rotate(params): # params is a list of 2 parameters of different types
# Execute rotation
moves: {
"A": [(move, [param1, param2 etc...]), (rotate, [other_param1, other_param2])
"B": [(move, [param3, param4 etc...]), (rotate, [other_param3, other_param4])
}
def execute_move(move):
for func, params in moves[move]:
func(params)
# Example use
execute_move("A")
execute_move("B")
execute_move("A")
This works really well, so thank you all for your help.