有关类的Python文档说,当输入类定义时,将创建一个新的命名空间,并将其用作本地作用域。
对变量的任何赋值都会在此局部空间中进行。 函数定义在此本地范围内绑定新函数的名称。
然后我在Python中执行了这段简单的代码:
class C:
next_serial = 1337
def __init__(self, x, y):
self.x = x
self.y = y
self.z = next_serial
next_serial += 1
c1 = C('ABC','XYZ')
print(c1.x)
print(c1.y)
print(c1.z)
失败并出现UnboundLocalError:分配前已引用本地变量'next_serial'
现在按照文档类C创建一个新的命名空间,该命名空间充当本地作用域,其中将变量next_serial绑定到int对象1337 函数 init 绑定到该类中函数的定义。
Python为什么不将此本地范围视为函数 init 的封闭范围?