类变量引用了类定义之外的另一个变量。都有些什么样的规矩?

时间:2019-05-13 04:29:38

标签: python

如果它引用类定义之外的内容,我想知道类变量分配的规则是什么。

以下可能是我问题的更具体版本。

为什么我在这里出错?

>>> 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。

0 个答案:

没有答案