python - 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()”在函数中初始化它,我将不胜感激。
解决方案
推荐阅读
- javascript - 什么是 JavaScript 中的承诺?
- vba - Access 2016 Switchboard 将宏转换为 vba
- c++ - 与 map 和 unordered_map 相关的编译错误:“试图引用已删除的函数”
- haskell - 我应该如何去测试一个单一的可执行包?
- c++ - #define-macros 中的括号失败
- kubernetes - vsphere 云提供商 vcp 在更新到 kubernetes 1.11.0 后停止工作
- html - 如何在 html 中使用 Session 的值?
- r - R中mailR中的html邮件发送错误
- amazon-web-services - 如何开发和测试 AWS AppSync
- react-native - React Native 版本检查