【发布时间】:2018-08-18 14:42:13
【问题描述】:
考虑这个类定义:
def func():
x = 5
class Foo:
x = x
func()
我希望这会创建一个属性 x 设置为 5 的类 - 但相反,它会引发 NameError:
Traceback (most recent call last):
File "untitled.py", line 7, in <module>
func()
File "untitled.py", line 4, in func
class Foo:
File "untitled.py", line 5, in Foo
x = x
NameError: name 'x' is not defined
但是,该错误仅在函数内部引发,并且仅当 x 是局部变量时。所有这些 sn-ps 都可以正常工作:
x = 5
class Foo:
x = x
x = 5
def func():
class Foo:
x = x
func()
class Bar:
x = 5
class Foo:
x = x
def func():
x = 5
class Foo:
y = x
func()
是什么导致了这种奇怪的行为?
【问题讨论】:
-
看起来像一个全球与非本地问题
-
对于你想要的行为,只需在类定义之后设置
Foo.x = x。 -
This issue 似乎相关。
标签: python function class attributes