###前提・実現したいこと
Pythonで クラス内において、関数内関数でdecoratorを使用したい
###発生している問題・エラーメッセージ
Traceback (most recent call last): File "deco2.py", line 23, in <module> temp.print_hoge() File "deco2.py", line 8, in inner func(*args, **kwargs) File "deco2.py", line 15, in print_hoge @decorator NameError: global name 'decorator' is not defined
###該当のソースコード
python
1class MyClass(object): 2 def __init__(self): 3 pass 4 5 def decorator(func): 6 def inner(*args, **kwargs): 7 print "pre_func" 8 func(*args, **kwargs) 9 print "after_func" 10 return inner 11 12 @decorator 13 def print_hoge(self): 14 15 @decorator #この行をコメントアウトすると問題無く動きます 16 def inner_print_hoge(): 17 print "inner_hoge" 18 19 print "hoge" 20 inner_print_hoge() 21 22temp = MyClass() 23temp.print_hoge()
###試したこと
【該当のソースコード】の「#この行をコメントアウトすると問題無く動きます」をコメントアウトすると動きます。ただ、関数内関数でクラス内にある
decoratorを使おうとすると上記のエラーが出てしまいます。
###補足情報(言語/FW/ツール等のバージョンなど)
いつも参考にさせていただいております。
数日前に質問させていただいたhttps://teratail.com/questions/52151 の
内容と近いので追記しようとも思ったのですが、広く皆様のお知恵をお借りしたいと思い新規に投稿させて
いただきました。
関数内関数で同じclass内にあるdecoratorを使うにはどう書けば良いのか分からないのでご教授下さい。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー