Python 3.x 如何在python中使用_all__动态导出变量?

Python 3.x 如何在python中使用_all__动态导出变量?,python-3.x,Python 3.x,我有一个包含不同模型名的字典,我想将每个模型名导入并在其他模块(python文件)中使用 目前,我正在以这样一种不明智的方式固定代码: a.py MODELS = { "REGISTER":"model register", "REGISTER_UNATH": "model register unauthorised", "REGIS

我有一个包含不同模型名的字典,我想将每个模型名导入并在其他模块(python文件)中使用

目前,我正在以这样一种不明智的方式固定代码:

a.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)
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())