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

发布于 2024-11-02 20:31:50 字数 301 浏览 0 评论 0原文

我遇到的情况是,用户可以从另一个类中选择另一种方法,并使用 .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 modulefoo2` is used.

My problem is how to save the changes made maybe as foo3.py to a new source code file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鹿童谣 2024-11-09 20:31:50

将其保存为新的 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

昨迟人 2024-11-09 20:31:50

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.

同展鸳鸯锦 2024-11-09 20:31:50

您是否考虑过将 解析器 与上述 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)

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

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:

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)

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...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文