python,保存对导入模块所做的更改
我遇到的情况是,用户可以从另一个类中选择另一种方法,并使用 .im_func 在自己的类中使用它。我在下面给出了一个例子
import foo1
import foo2
foo1.ClassX.methodX = foo2.ClassX.methodX.im_func
,其中 methodX 可以在两个模块中以不同的方式实现。 当我实例化对象时,例如 foo1.Class(),将使用模块 foo2 中的 methodX 。
我的问题是如何将可能作为 foo3.py 所做的更改保存到新的源代码文件中。
I have a situation where users can pick another method from another clases and use it in thier own class using the .im_func. i give an example below
import foo1
import foo2
foo1.ClassX.methodX = foo2.ClassX.methodX.im_func
Where methodX could be implemented differently in both modules.
When i instantiate the object say foo1.Class(), methodX from module
foo2` is used.
My problem is how to save the changes made maybe as foo3.py to a new source code file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将其保存为新的 py 可能是一个问题,但您可以轻松地对其使用序列化(pickle 模块),
请参阅: http://docs.python.org/library/pickle.html
saving it as new py could be a problem but you can easily use serialization for it (pickle module)
see: http://docs.python.org/library/pickle.html
可以使用
inspect
模块。然而,问题在于,它是原始源代码,而不是动态修改对象的源代码。The source code can be retrieved with
inspect
module. However, the problem with that is, that it's the original source code, not source code of dynamically modified object.您是否考虑过将 解析器 与上述 inspect 来执行此操作?在这种情况下,最好简单地进行文本处理,而不是尝试使用导入的模块。
编辑:使用解析器打印文件的示例:
然后您必须进行一些棘手的编程来合并源代码中的方法并将其写入文件。但话又说回来,我有一种奇怪的感觉,我不太明白这个问题......
Have you considered using parser combined with the aforementioned inspect to do this? In this situation it might be better to simply go with text processing rather than attempting to use imported modules.
EDIT: An example of using the parser to print the file:
You'd have to then do some tricky programming to merge the methods from the source code and write it to a file. But then again I have the strange feeling I'm not quite understanding the question...