为什么类不能充当Python中函数的封闭空间

时间:2019-02-28 12:43:47

标签: python-3.x

有关类的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 的封闭范围?

0 个答案:

没有答案