gpt4 book ai didi

python - 如何将变量添加到我从中导入的模块?

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:04 25 4
gpt4 key购买 nike

我想做的是这样的:

template.py

def dummy_func():
print(VAR)
# more functions like this to follow

fabfile.py
# this gets called by fabric (fabfile.org)
# safe to think of it as ant build.xml

import template
template.VAR = 'some_val'
from template import *

也就是说,我有一个模板模块,其他模块应该“扩展”贡献所需的变量。这可以以功能方式完成(而不是对象继承)吗?

编辑:添加了更多代码。

最佳答案

我不确定您所说的“功能性方式”是什么意思——您是说 functional programming 中的意思吗? ?这不会发生(因为您本质上是在尝试修改一个对象,这与 FP 正好相反)。或者您的意思是“一种行之有效的方式”?

对于后一种解释,最大的问题是 import * 部分——在许多建议不要使用它的问题中,你会遇到一个问题:它执行 <当时绑定(bind)的任何模块级名称的 strong>快照(或者只是模块中 __all__ 中列出的名称,如果已定义)——将来对名称绑定(bind)的更改将永远不会反射(reflect)在以前执行 import * 的模块中。

为什么您认为需要将 template_module 的命名空间合并到导入模块的命名空间中?如果你只是做了一个常规的 import template_module as tm,那么简单地将所有相关名称引用为 tm.thistm.that 就可以了很好(包括在使用时获取绑定(bind)的所有更改——换句话说,它使用您在此处似乎需要的“后期绑定(bind)”方法)。

关于python - 如何将变量添加到我从中导入的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1902656/

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