gpt4 book ai didi

Python:如何加载一个模块两次?

转载 作者:太空狗 更新时间:2023-10-29 20:41:12 24 4
gpt4 key购买 nike

有没有办法在同一个 python session 中加载模块两次?
用一个例子来回答这个问题:这是一个模块:

模组.py

x = 0

现在我想导入该模块两次,例如创建一个类的两个实例以实际拥有 x 的两个副本。

已经回答了评论中的问题,“如果他们可以用 x 作为变量创建一个类,为什么有人会想要这样做”:
你是对的,但是存在大量的源代码需要重写,加载一个模块两次将是一个快速修复^^。

最佳答案

是的,你可以加载一个模块两次:

import mod
import sys
del sys.modules["mod"]
import mod as mod2

现在,modmod2 是同一模块的两个实例。

也就是说,我怀疑这是否有用。改用类——最终会减少工作量。

编辑:在 Python 2.x 中,您还可以使用以下代码“手动”导入模块:

import imp

def my_import(name):
file, pathname, description = imp.find_module(name)
code = compile(file.read(), pathname, "exec", dont_inherit=True)
file.close()
module = imp.new_module(name)
exec code in module.__dict__
return module

这个解决方案可能比第一个更灵活。您不再需要“对抗”导入机制,因为您正在(部分地)推出自己的导入机制。 (请注意,此实现不设置模块的 __file____path____package__ 属性——如果需要这些,只需添加代码设置它们。)

关于Python:如何加载一个模块两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6507896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com