为了账号安全,请及时绑定邮箱和手机立即绑定

在 exec() 执行的函数内部调用函数并获取结果

在 exec() 执行的函数内部调用函数并获取结果

慕侠2389804 2021-11-09 16:15:30
我正在尝试在 python 中开发远程过程调用框架,但 exec() 函数有问题。简化场景:class Example:  def __init__():    pass  def add(self, string):    return anothermodule.func(self,string)class Framework:  def function_call():     exec("a = exampleObject.add(string)")似乎不可能用 exec() 调用一个内部有另一个函数的函数。我试过了,但我总是得到“错误数量的参数”。在调试模式下,我什至没有被转移到“添加”功能以查看发生了什么。但是,这可以正常工作。class Example:  def __init__():    pass  def add(self, x):    return x + 3class Framework:  def function_call():     exec("a = exampleObject.add(8)")def main():  framework = Framework()  framework.function_call()exampleObject 是根据另一个方法中提供的参数在另一个类中动态创建的。它只是 Example 类的实例。这只是我想要实现的简化版本。它不代表我的确切代码。我想说的是,我的 exec() 仅适用于简单的操作,并且无法在原始方法中调用另一种方法。
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

从你的例子来看,我认为问题根本不在于你的调用exec()。相反,它在testFunction方法中:

def testFunction(self,a,b):
    return self.add(self,a,b)

请注意,您self在调用self.add(self, a, b)self总是隐式包含在方法调用中,因此该行本质上是在调用self.add(self, self, a, b),它确实具有错误数量的参数。

那应该可以解决您的错误。但除此之外,您永远不应该使用 exec()


查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信