ループ内で次を使用して、実行時にモジュールに属性を追加しています。
this_module = sys.modules[__name__]
setattr(this_module, attr_name, attr_value)
print dir(this_module)
モジュールから呼び出すと、属性が表示されます。すごい!
モジュールをインポートしてデコレーターで属性を使用しようとすると、AttributeError
例外がスローされ続けます。デバッグするためdir()
に、インポートしたモジュールを呼び出しましたが、オンザフライで追加された属性はどれもリストされていません!
に属性名を追加しまし__all__
たが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