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

我正在尝试在 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 + 3


class Framework:


  def function_call():

     exec("a = exampleObject.add(8)")



def main():

  framework = Framework()

  framework.function_call()

exampleObject 是根据另一个方法中提供的参数在另一个类中动态创建的。它只是 Example 类的实例。这只是我想要实现的简化版本。它不代表我的确切代码。我想说的是,我的 exec() 仅适用于简单的操作,并且无法在原始方法中调用另一种方法。


慕侠2389804
浏览 204回答 1
1回答

波斯汪

从你的例子来看,我认为问题根本不在于你的调用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()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python