类中所有函数的函数字典

时间:2014-10-31 14:27:31

标签: python dictionary

我对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'没有定义。我不确定为什么会这样。我在构造函数中得到错误。有什么想法吗?

3 个答案:

答案 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"是课程的一部分,可以使用自我...