Как отправить значение в исполняемый код exec - PullRequest
1 голос
/ 18 октября 2019

Первый , у меня есть два таких класса:

class A(object):
    def foo(self, context):
        print(context)

class B(object):
    def foo(self, context):
        print(context)

Обратите внимание на переменную context.

Второй , IЯ хочу вызвать A и B в exec следующим образом:

body = """
a = A()
a.foo()
b = B()
b.foo()
"""
exec(body)

У меня также есть некоторые другие классы, которые используют context.

Что означает, что я не хочу contextпеременная появилась в коде body. Это было сгенерировано в другом месте. И я хочу отправить его exec или другими способами.

Так как я могу это сделать?

1 Ответ

1 голос
/ 18 октября 2019

Вместо этого вы можете сделать context глобальной переменной:

class A(object):
    def foo(self):
        print(context)

class B(object):
    def foo(self):
        print(context)

body = """
a = A()
a.foo()
b = B()
b.foo()
"""
context = 'foobar'
exec(body)

Это выдаст:

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