是否可以将全局变量导入对象的实例命名空间?你知道吗
在这样的结构中:
./mypackage/module1.py
./config.py
./script1.py
如果配置.py有:
#config
MYSETTING=1
script1.py有:
#SCRIPT1
from config import *
from mypackage.mymodule import MyClass as MC
obj=MC()
模块1.py:
#Myclass
class MyClass(object):
def test(self):
print MYSETTING
将产生错误NameError: global name "MYSETTING" is not defined
有什么方法可以从中导入变量吗配置.py作为globals进入MyClass名称空间,而不在每个名称空间上执行枚举的“global x”?你知道吗
这个问题有点令人困惑。有三个部分。你知道吗
config
:包含所需的变量。你知道吗script
:包含从config
导入的逻辑代码和变量。你知道吗module
:包含函数的定义。你知道吗当您调用
MC.test
时,它将在module
的命名空间中找到MYSETTING
,但您想要的是在script
的命名空间中找到。所以在test
函数中,您真正想要的是访问父帧的全局命名空间。你知道吗在这种情况下,您需要使用
inspect
内置模块。你知道吗inspect.current_frame()
将返回当前帧,f_back
表示调用此函数的父帧,然后f_globals
表示帧的globals()
相关问题 更多 >
编程相关推荐