如果我有一個文件,我們會打電話給他test1.py包含:蟒蛇EVAL在「庫」文件
code='''
class Something(object):
def __init__(self):
print "blah blah blah, this is a horrible idea"
def run():
print "don't preach at me you pretentious fool"
'''
eval(compile(code, '<string>', 'exec'))
然後下面我eval
聲明,在同test1的。 PY文件我當然可以做的東西一樣:
x = Something()
run()
但是......如果說我有叫test2.py另一個文件,我希望能夠運行run()
或在發射import test1
後從那裏實例化Something
?我假設有必要對locals()
或globals()
進行某些操作,但Google在這裏使我失敗。
不要太難過;標準庫中的collections.namedtuple使用'exec'來執行由文本模板構建的類定義。 – chepner