Я относительно новичок в python, и у меня есть класс, который имеет кучу разных функций. Я читаю в пользовательском вводе, и в зависимости от ввода пользователя я вызываю другую функцию. Вместо того, чтобы иметь кучу If Else заявлений я думал, что было бы лучше иметь словарь функций, так в настоящее время мой класс выглядит следующим образом:Словарь функций для всех функций класса
class Foo:
def func1(self):
#do something
def func2(self, arg1):
#do something else
def func3(self, arg1, arg2):
#do something
def func4(self, arg1):
#do something
def __init__(self):
self.functions = {"FUNC2": func2, "FUNC4":func4}
def run_loop(self):
while 1:
user_input = raw_input()
cmd = user_input.split(' ')[0]
if cmd in self.functions:
self.functions[cmd].__get__(self, type(self))()
else:
#call other functions
Я звоню это в main.py
так:
c = Class()
c.run_loop()
Моя проблема в том, что я получаю следующую ошибку: NameError
: глобальное имя «func2» не определено`. Я не совсем уверен, почему это происходит. Я получаю ошибку в конструкторе. Есть идеи?
Вы должны использовать 'self.func' в' __init__'. – TidB