慕尼黑8549860
首先“exec”是不被推荐的方法,因为它会带来一些问题:
一些基于__module__属性的模块会失败,比如pickle,inspect,pydoc等
内存泄漏
namespace和module shutdown behavior issue
关于这几点问题的详细描述,可以参考:http://lucumr.pocoo.org/2011/...
既然你硬要这么做的话,下面代码可以提供一点参考:
tester.py
# encoding: utf-8
# tester.py
import actor
content = """
class MyClass:
def __init__(self):
self.name = None
self.age = None
def do():
return MyClass()
"""
vars = {}
code = compile(content, '', 'exec')
m_cls = actor.execute(code, vars, vars)
print m_cls.name
actor.py
# encoding: utf-8
# actor.py
def execute(content, m_globals, m_locals):
exec(content, m_globals, m_locals)
return m_globals['do']()