Пожалуйста, извините за смутное название. Если у кого-нибудь есть предложение, пожалуйста, дайте мне знать! Также, пожалуйста, пометьте теги с более подходящими тегами!
Проблема
Я хочу, чтобы экземпляр импортируемого класса мог просматривать вещи в области видимости (глобальные, локальные) импортера. Поскольку я не уверен в точном механизме работы здесь, я могу описать его гораздо лучше с помощью фрагментов, чем слов.
## File 1
def f1(): print "go f1!"
class C1(object):
def do_eval(self,x): # maybe this should be do_evil, given what happens
print "evaling"
eval(x)
eval(x,globals(),locals())
Затем запустите этот код из итеративного сеанса, там будет много NameErrors
## interactive
class C2(object):
def do_eval(self,x): # maybe this should be do_evil, given what happens
print "evaling"
eval(x)
eval(x,globals(),locals())
def f2():
print "go f2!"
from file1 import C1
import file1
C1().do_eval('file1.f1()')
C1().do_eval('f1()')
C1().do_eval('f2()')
file1.C1().do_eval('file1.f1()')
file1.C1().do_eval('f1()')
file1.C1().do_eval('f2()')
C2().do_eval('f2()')
C2().do_eval('file1.f1()')
C2().do_eval('f1()')
Существует ли распространенная идиома / шаблон для такого рода задач? Я полностью лаю не на том дереве?