0

我正在尝试构建一个在线 Python Shell。我通过创建一个实例来执行命令InteractiveInterpreter并使用命令runcode。为此,我需要将解释器状态存储在数据库中,以便可以跨命令使用全局和局部命名空间中的变量、函数、定义和其他值。有没有办法存储InteractiveInterpreter可以稍后检索并作为参数传递localInteractiveInterpreter构造函数的对象的当前状态,或者如果我不能这样做,我必须有哪些替代方法来实现上述功能?
下面是我想要实现的伪代码


def fun(code, sessionID):
     session = Session()
     # get the latest state of the interpreter object corresponding to SessionID
     vars = session.getvars(sessionID)
     it = InteractiveInterpreter(vars)
     it.runcode(code)
     #save back the new state of the interpreter object
     session.setvars(it.getState(),sessionID)

在这里,会话是一个包含所有必要信息的表的实例。

4

2 回答 2

0

我相信这个pickle包应该适合你。您可以使用pickle.dumppickle.dumps来保存大多数对象的状态。(然后pickle.loadpickle.loads取回它)

于 2012-11-06T15:28:29.960 回答
0

好的,如果 pickle 不起作用,您可以尝试使用如下格式(大致)重新实例化该类:

class MyClass:
    def __init__(self, OldClass):
        for d in dir(OldClass):
            # go through the attributes from the old class and set
            # the new attributes to what you need
于 2012-11-06T17:43:24.410 回答