Python,保存对导入模块所做的更改
我遇到了一种情况,用户可以从其他类中选择一个方法,然后在自己的类中使用这个方法,方法是通过.im_func来调用的。下面我给个例子。
import foo1
import foo2
foo1.ClassX.methodX = foo2.ClassX.methodX.im_func
在这个例子中,methodX在两个模块中的实现可能是不同的。当我创建一个对象,比如说 foo1.Class()
,这时会使用来自模块foo2的methodX。
我现在的问题是,如何把所做的更改保存到一个新的源代码文件,比如叫foo3.py。
3 个回答
0
你有没有考虑过使用parser这个工具,结合之前提到的inspect来实现这个功能?在这种情况下,可能直接处理文本会更简单,而不是尝试使用那些导入的模块。
补充:这是一个使用parser来打印文件的例子:
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)
接下来你需要做一些复杂的编程,把源代码中的方法合并起来,并写入一个文件。不过我有种奇怪的感觉,可能我并没有完全理解这个问题……
0
你可以使用 inspect
模块来获取源代码。不过,这里有个问题,就是它获取的是原始的源代码,而不是动态修改过的对象的源代码。
0
把它保存为新的.py文件可能会有点问题,但你可以很简单地使用序列化来解决这个问题(可以用pickle模块)。