私はこれを検索しましたが、何も見つかりませんでした。 Python documentation 9.2.1には、関数scope_test()
を使用して与えられた例があります。Python 3.6.0のクラス内のメソッドには非ローカルです
def scope_test():
def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam)
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
私はclass
に変更し、それを実行し、私が取得:
SyntaxError: no binding for nonlocal 'spam' found
私は'nonlocal'
は、クラス内のメソッドのために動作しませんが、それだけで関数内の関数を見つける働く把握。私がオンラインで見つけた答えはすべて、クラスではなく関数用です。
- なぜ非ローカルはクラスに対して機能しませんか?
- 道はありますか?