Python 3.x 如何在python中使用_all__动态导出变量?
我有一个包含不同模型名的字典,我想将每个模型名导入并在其他模块(python文件)中使用 目前,我正在以这样一种不明智的方式固定代码: a.pyPython 3.x 如何在python中使用_all__动态导出变量?,python-3.x,Python 3.x,我有一个包含不同模型名的字典,我想将每个模型名导入并在其他模块(python文件)中使用 目前,我正在以这样一种不明智的方式固定代码: a.py MODELS = { "REGISTER":"model register", "REGISTER_UNATH": "model register unauthorised", "REGIS
MODELS = {
"REGISTER":"model register",
"REGISTER_UNATH": "model register unauthorised",
"REGISTER_HISTORY": "model register old record"
}
# variables to export for use outside
REGISTER = MODELS['REGISTER']
REGISTER_UNATH = MODELS['REGISTER_UNATH']
REGISTER_HISTORY = MODELS['REGISTER_HISTORY']
__all__ = ['REGISTER', 'REGISTER_UNATH', 'REGISTER_HISTORY']
from a import *
print ("Check Model Register")
print (REGISTER)
print ("Check Model Register unauthorised")
print (REGISTER_UNATH)
print ("Check Model Register old record")
print (REGISTER_HISTORY)
b.py
MODELS = {
"REGISTER":"model register",
"REGISTER_UNATH": "model register unauthorised",
"REGISTER_HISTORY": "model register old record"
}
# variables to export for use outside
REGISTER = MODELS['REGISTER']
REGISTER_UNATH = MODELS['REGISTER_UNATH']
REGISTER_HISTORY = MODELS['REGISTER_HISTORY']
__all__ = ['REGISTER', 'REGISTER_UNATH', 'REGISTER_HISTORY']
from a import *
print ("Check Model Register")
print (REGISTER)
print ("Check Model Register unauthorised")
print (REGISTER_UNATH)
print ("Check Model Register old record")
print (REGISTER_HISTORY)
然而,对于a.py
我想动态地从模型字典中导出变量,因为该字典在将来会越来越多
所以,我做了一些类似的事情,但不起作用
MODELS = {
"REGISTER":"model register",
"REGISTER_UNATH": "model register unauthorised",
"REGISTER_HISTORY": "model register old record"
}
# variables to export for use outside
modelist = []
for model, modelDesc in MODELS.items():
# append to list ready for export
modelist.append(model)
# export for using outside
__all__ = modelist
然后通过python b.py
,我得到了这个错误
Traceback (most recent call last):
File "b.py", line 1, in <module>
from a import *
AttributeError: module 'a' has no attribute 'REGISTER'
回溯(最近一次呼叫最后一次):
文件“b.py”,第1行,在
从进口*
AttributeError:模块“a”没有属性“REGISTER”
谢谢。您是否尝试过执行
globals().update(型号)__所有参数=列表(MODELS.keys())
?
# turn the key-value pairs in `MODELS` into variable-value pairs
globals().update(MODELS)
# record those variable names in `__all__`
__all__ = list(MODELS.keys())