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将其与类绑定。任何帮助将不胜感激。