デコレータで”更新されたグローバル変数”を使用したい

実現したいこと

前提

デコレータは別ファイルに存在します。

ある関数で事前にグローバル変数を変更し、それをデコレータに引数として渡して利用したいのですが、初期化時のまま渡されてしまいます。
他関数ではしっかりとグローバル変数の更新が確認できているのですが、デコレータの渡したときのみ初期値が与えられるようです。

該当のソースコード

python

1from deco import *2 3 4class var:5 x = 'var'6 7 8def main():9 var.x = 'main'10 test()11 12 13@deco(var.x)14def test():15 var.x = 'test'16 print('ex test', var.x)17 18 19if __name__ == '__main__':20 main()

python

1def deco(vari):2 def _deco(func):3 def wrapper(*args, **kwargs):4 print('ex main ', vari)5 func(*args, **kwargs)6 print('ex test', vari)7 return wrapper 8 return _deco 9

試したこと

変数を格納するだけのクラスを作ってみた。
デコレータを同一ファイルに置いてみた。

コメントを投稿

0 コメント