私は3つのファイルa.py、b.py、c.pyを持っています
a.py内からc.pyで定義された「C」というクラスを動的にインポートし、評価された名前をb.pyで使用できるようにしようとしています
python a.py は現在 NameError をキャッチしています。これを回避し、C.do_int(10) を呼び出すインスタンスを b.py に作成しようとしています。
a.py
import b
#older
#services = __import__('services')
#interface = eval('services.MyRestInterface')
# python2.7
import importlib
module = importlib.import_module('c')
interface = eval('module.C')
# will work
i = interface()
print i.do_int(10)
# interface isn't defined in b.py after call to eval
try:
print b.call_eval('interface')
except NameError:
print "b.call_eval('interface'): interface is not defined in b.py"
b.py
def call_eval(name):
interface = eval(name)
i = interface()
return i.do_int(10)
c.py
class C(object):
my_int = 32
def do_int(self, number):
self.my_int += number
return self.my_int
どうすればこれを達成できますか?