Python exec () не может инициализировать экземпляр класса в функции - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу инициализировать экземпляр класса в функции с помощью "exec ()", а затем вернуть экземпляр .Но это не работает, хотя я добавил «globals ()» в параметры функции «exec ()».Вот мой код:

>>> 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 ()".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...