gpt4 book ai didi

python - 从类实例调用 exec() 中的函数

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:26 28 4
gpt4 key购买 nike

我有一个自动生成的 Python 代码片段,我想从类实例中exec()

一个简化的代码片段如下所示:

prog = """
def func1():
func2()

def func2():
pass

func1()
"""

class test():
def run(self):
exec(prog)

test().run() # results in NameError: name 'func2' is not defined
exec(prog) # works

虽然在这两种情况下都可以调用 func1(),但是当从类中执行 exec() 时,找不到 func2 .如果我先运行 exec(prog),那么即使 test().run() 也会成功。似乎之前的 exec 调用将 func2 留在命名空间中的某个位置,稍后从类中调用时可以找到它。

有没有一种简单干净的方法可以从一个类中调用这样一个包含多个函数的代码片段?

最佳答案

您可以使用exec(prog, globals()) 来执行全局命名空间中的代码。

关于python - 从类实例调用 exec() 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41257627/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com