如果它引用类定义之外的内容,我想知道类变量分配的规则是什么。
以下可能是我问题的更具体版本。
为什么我在这里出错?
>>> def foo():
... x = 123
... class A:
... x = x
... return A
...
>>> A = foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in foo
File "<stdin>", line 4, in A
NameError: name 'x' is not defined
但是以下两个都可以吗?
>>> x = 123
>>> class A:
... x = x
...
>>> A.x
123
>>>
>>> def foo():
... x = 123
... class A:
... y = x
... return A
...
>>> A = foo()
>>> A.y
123
我正在使用Python 3.7.0。