我在运行时使用循环内的以下内容向模块添加属性:
this_module = sys.modules[__name__]
setattr(this_module, attr_name, attr_value)
当我print dir(this_module)
从模块调用时,它会显示属性。伟大的!
当我导入模块并尝试在装饰器中使用该属性时,AttributeError
会不断抛出异常。为了调试,我调用dir()
了导入的模块,并且没有列出任何动态添加的属性!
__all__
我什至为 the添加了属性名称,但import *
仍然没有!
任何想法都会很棒。另外,请让我知道我可能遗漏的任何术语。我无法在 Google 中找到答案。
--
根据 Kevin 的建议,我在我的 Flask 应用程序中添加了一个字典(而不是他的顶级建议,只是为了便于测试)并将这些属性添加到其中:
app.security = dict()
在循环:
app.security[attr_name] = attr_value
在使用装饰器的模块中('time_entry' 是一个属性名称,它包含一个类实例):
@app.security['time_entry'].need()
当我尝试启动服务器时,我现在收到此错误:
@security["time_write"].require()
^
SyntaxError: invalid syntax