Могут ли операторы switch иметь функции с аргументами? - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть скрипт, над которым я работаю, который имеет переключатель с функцией.

Я хотел бы создать случаи на основе keyCodes и выполнить правильный метод с аргументами. коды клавиш могут быть «C» ИЛИ «P», в противном случае будет выведено «Invalid».

class Switcher(object):
def indirect(self, code):
    method_name = 'method_' + str(code)
    method = getattr(self,method_name, lambda: 'Invalid')
    return method()

def method_C(self,title):
    return 'method_C'  + title


def method_P(self,title):
    return 'method_P'  + title

Мой main () выглядит следующим образом:

s = Switcher()
func = s.indirect('C')
a = func("I'm at Method_C")
print(a)

Я получаю исключение при попытке передать сгенерированному методу аргументы

TypeError: 'str' object is not callable

относится к строке кода: a = func ("I'm at Method_C")

ЛЮБЫЕ ИДЕИ?

1 Ответ

0 голосов
/ 01 сентября 2018

Я хочу вызывать методы, основанные на 1 ключевом параметре, и прежде чем вызывать полученный метод, чтобы передать ему аргументы.


чтобы быть более понятным, я хочу:

1. send key = 'C'.
2  the switch will select method_C as result.
3. to call the method_C with string argument (without knowing which method was 
   resulted).
...