2013-10-19 36 views
0

我是Python的新手,开发一个自定义CLI,允许用户在CLI(从cmd.Cmd模块派生的自定义CLI模块)上动态定义函数。自定义命令模块中的Overriden default()方法将采用用户输入的字符串,并且必须执行代码,无论是动态函数定义还是其他自定义任务。 即我的要求是动态转换下面CLI代码成员函数,使用户能够执行从CLI函数对象Python - exec从一个字符串中定义一个类的成员函数

CLI:>def abc(self):print("New fn") 
    CLI:>print(cli.abc()) # Cli object pre-created 
    Output: New fn 

默认方法会得到从CLI输入为ARGS的字符串。

class CliCmd(cmd.Cmd): 
     def default(self, func): # func = "def abc(self):print("New fn")" 
      # Parse for function name 
      funcName = func.split()[1].split("(")[0] 
      exec(func) 
      setattr(self.__class__, funcName, ?) # How do I feed the function object 

凡在老的Python,我可以做字典EXEC func.strip(),EXEC只返回在Python 3.2无。所以,我不知道如何获得abc()的函数对象,我可以使用setattr将其与类绑定。任何帮助将不胜感激。

回答

相关问题