0

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

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

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

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

4

3 回答 3

0

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

见:http ://docs.python.org/library/pickle.html

于 2011-04-21T13:45:11.677 回答
0

您是否考虑过将解析器与上述检查结合使用来执行此操作?在这种情况下,最好简单地进行文本处理,而不是尝试使用导入的模块。

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

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)

然后,您必须进行一些棘手的编程来合并源代码中的方法并将其写入文件。但话又说回来,我有一种奇怪的感觉,我不太理解这个问题......

于 2011-04-21T15:03:44.900 回答
0

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

于 2011-04-21T13:52:33.940 回答