首页 > 解决方案 > Python exec() 无法在函数中初始化类实例

问题描述

我想通过使用“exec()”在函数中初始化一个类实例,然后返回该实例。但它不起作用,虽然我在“exec()”函数的参数中添加了“globals()”。这是我的代码:

>>> class Foo:
        def __init__(self):
            print("hello world")


>>> def initialize():
        fooInstance = None
        exec('fooInstance = Foo()', globals())
        print(fooInstance)
        return fooInstance

>>> test = initialize()
hello world
None

>>> print(test)
None

基本上,类的“ init ”函数被调用,但变量“ fooInstance没有改变为Foo的对象,保持“None”值。

我还测试了使用 exec() 在外部范围内初始化类实例是否有效,答案是肯定的。

>>> newInstance = None
>>> exec('newInstance = Foo()', globals())
hello world
>>> newInstance
<__main__.Foo object at 0x00000273AF151F60>

如果有任何解决方案可以使用“exec()”在函数中初始化它,我将不胜感激。

标签: pythonclassinitializationexec

解决方案


推荐阅读