我对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'没有定义。我不确定为什么会这样。我在构造函数中得到错误。有什么想法吗?
答案 0 :(得分:2)
您需要通过在其中添加self
来指定该功能在该类中。
def __init__(self):
self.functions = {"FUNC2": self.func2, "FUNC4":self.func4}
答案 1 :(得分:1)
您需要使用self从同一类中的其他函数访问类函数。更正的代码将是
self.functions = {"FUNC2": self.func2, "FUNC4":self.func4}
答案 2 :(得分:0)
该类中未识别该功能。功能" func2" &安培; " FUNC4"是课程的一部分,可以使用自我...