python,保存对导入模块所做的更改

时间:2011-04-21 13:32:52

标签: python savechanges

我有一种情况,用户可以从另一个clases中选择另一个方法,并使用.im_func在自己的类中使用它。我举一个例子

import foo1
import foo2
foo1.ClassX.methodX = foo2.ClassX.methodX.im_func

其中methodX可以在两个模块中以不同方式实现。 当我实例化对象时,使用foo1.Class(), methodX from module foo2`。

我的问题是如何将所做的更改保存为foo3.py到新的源代码文件。

3 个答案:

答案 0 :(得分:0)

将其保存为新py可能是个问题,但您可以轻松地使用序列化(pickle模块)

请参阅:http://docs.python.org/library/pickle.html

答案 1 :(得分:0)

可以使用inspect模块检索源代码。然而,问题在于,它是原始源代码,而不是动态修改对象的源代码。

答案 2 :(得分:0)

您是否考虑过使用parser与上述inspect相结合来执行此操作?在这种情况下,最好只使用文本处理而不是尝试使用导入的模块。

编辑:使用解析器打印文件的示例:

with open('foo1.py','r') as fh:
    st = parser.suite(fh.read())
    src1 = parser.st2list(st)

with open('foo2.py','r') as fh:
    st = parser.suite(fh.read())
    src2 = parser.st2list(st)

然后你必须做一些棘手的编程来合并源代码中的方法并将其写入文件。但是我又有一种奇怪的感觉,我不太明白这个问题......