【发布时间】:2017-02-26 20:13:54
【问题描述】:
我已经搜索过这个,但我找不到任何东西。在Python documentation 9.2.1 中给出了一个示例,使用函数scope_test()。
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' 不适用于类内的方法,但它仅适用于函数内的函数查找。我在网上找到的所有答案都是针对函数的,而不是针对类的。
- 为什么 nonlocal 不适用于类?
- 有什么办法吗?
【问题讨论】:
标签: python python-3.x