克隆模块并对副本进行更改

2024-04-25 16:43:03 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以复制模块,然后对副本进行更改?换一种说法,我能从模块继承然后重写或修改它的一部分吗?在


Tags: 模块副本
2条回答

Python模块的命名空间是可写的。考虑:

# contrived.py
CONST = 100
def foo():
    return CONST

导入CONST后,可以修改它的值:

^{pr2}$

但是,只能导入模块的一个实例,因此不必创建克隆并继续使用原始模块。如果您不需要访问原始模块,那么创建一个包装器模块并覆盖您想要更改的任何内容就相当简单了。在

需要注意的一点是,这样的代码不会像您预期的那样工作:

^{3}$

这实际上将在clone的命名空间中分配CONST,从contrived导入的函数将继续引用contrive命名空间中的CONST

import clone
clone.foo() # 100

在这种情况下,您可以这样做:

# clone.py
import contrived
contrived.CONST = 200
from contrived import *

To phrase another way, can I inherit from a module, and then override or modify parts of it?

是的。在

import module

您可以使用module中的内容或重写脚本中的内容。在

您也可以这样做来创建一个“派生”模块。在

称之为“模块2”。在

^{pr2}$

它进口一切。然后,您可以使用module中的内容,或者重写这个新模块“module\u2”中的内容。在

其他脚本也可以这样做

^{3}$

并从module_2中的重写中获取module中的所有内容。在

相关问题 更多 >