2024-04-25 16:43:03 发布
网友
是否可以复制模块,然后对副本进行更改?换一种说法,我能从模块继承然后重写或修改它的一部分吗?在
Python模块的命名空间是可写的。考虑:
# contrived.py CONST = 100 def foo(): return CONST
导入CONST后,可以修改它的值:
CONST
但是,只能导入模块的一个实例,因此不必创建克隆并继续使用原始模块。如果您不需要访问原始模块,那么创建一个包装器模块并覆盖您想要更改的任何内容就相当简单了。在
需要注意的一点是,这样的代码不会像您预期的那样工作:
这实际上将在clone的命名空间中分配CONST,从contrived导入的函数将继续引用contrive命名空间中的CONST:
clone
contrived
contrive
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中的内容或重写脚本中的内容。在
module
您也可以这样做来创建一个“派生”模块。在
称之为“模块2”。在
它进口一切。然后,您可以使用module中的内容,或者重写这个新模块“module\u2”中的内容。在
其他脚本也可以这样做
并从module_2中的重写中获取module中的所有内容。在
Python模块的命名空间是可写的。考虑:
导入
^{pr2}$CONST
后,可以修改它的值:但是,只能导入模块的一个实例,因此不必创建克隆并继续使用原始模块。如果您不需要访问原始模块,那么创建一个包装器模块并覆盖您想要更改的任何内容就相当简单了。在
需要注意的一点是,这样的代码不会像您预期的那样工作:
^{3}$这实际上将在
clone
的命名空间中分配CONST
,从contrived
导入的函数将继续引用contrive
命名空间中的CONST
:在这种情况下,您可以这样做:
是的。在
您可以使用
module
中的内容或重写脚本中的内容。在您也可以这样做来创建一个“派生”模块。在
称之为“模块2”。在
^{pr2}$它进口一切。然后,您可以使用
module
中的内容,或者重写这个新模块“module\u2”中的内容。在其他脚本也可以这样做
^{3}$并从module_2中的重写中获取module中的所有内容。在
相关问题 更多 >
编程相关推荐